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);