Software /
code /
prosody
Diff
util/stanza.lua @ 9630:bff66c3faceb 0.11
util.stanza: Validate input to clone() (with brief tests)
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 17 Nov 2018 15:26:11 +0100 |
parent | 9489:09b873ac7eb8 |
child | 9674:6f97acc4583b |
line wrap: on
line diff
--- a/util/stanza.lua Thu Nov 15 21:55:16 2018 +0000 +++ b/util/stanza.lua Sat Nov 17 15:26:11 2018 +0100 @@ -398,7 +398,7 @@ 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 @@ 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 @@ 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);