diff options
author | Kim Alvefur <zash@zash.se> | 2018-11-17 15:26:11 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2018-11-17 15:26:11 +0100 |
commit | a83cf53a220529936f62cae63d5e55677eb145b3 (patch) | |
tree | 2ee472e15e4b5e42a04ffa8b5afa7632065afbfd /util/stanza.lua | |
parent | 7a66697c6ad8ca48244d2defa578c822e9406632 (diff) | |
download | prosody-a83cf53a220529936f62cae63d5e55677eb145b3.tar.gz prosody-a83cf53a220529936f62cae63d5e55677eb145b3.zip |
util.stanza: Validate input to clone() (with brief tests)
Diffstat (limited to 'util/stanza.lua')
-rw-r--r-- | util/stanza.lua | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/util/stanza.lua b/util/stanza.lua index 85c89d43..8d199912 100644 --- a/util/stanza.lua +++ b/util/stanza.lua @@ -398,7 +398,7 @@ local function deserialize(stanza) return stanza; end -local function clone(stanza) +local function _clone(stanza) local attr, tags = {}, {}; for k,v in pairs(stanza.attr) do attr[k] = v; end local old_namespaces, namespaces = stanza.namespaces; @@ -410,7 +410,7 @@ local function clone(stanza) for i=1,#stanza do local child = stanza[i]; if child.name then - child = clone(child); + child = _clone(child); t_insert(tags, child); end t_insert(new, child); @@ -418,6 +418,13 @@ local function clone(stanza) return setmetatable(new, stanza_mt); end +local function clone(stanza) + if not is_stanza(stanza) then + error("bad argument to clone: expected stanza, got "..type(stanza)); + end + return _clone(stanza); +end + local function message(attr, body) if not body then return new_stanza("message", attr); |