aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2019-11-25 20:44:05 +0100
committerKim Alvefur <zash@zash.se>2019-11-25 20:44:05 +0100
commitb9875e5501fe7ab32465e4677a9f35b064be5099 (patch)
tree603e11e382185e757035e937142d1c8e03c45e87
parente7c738ba3f21dce52cf4efe1bd0bbb7393d099cd (diff)
downloadprosody-b9875e5501fe7ab32465e4677a9f35b064be5099.tar.gz
prosody-b9875e5501fe7ab32465e4677a9f35b064be5099.zip
util.stanza: Check that argument to reply is a stanza
-rw-r--r--spec/util_stanza_spec.lua6
-rw-r--r--util/stanza.lua3
2 files changed, 9 insertions, 0 deletions
diff --git a/spec/util_stanza_spec.lua b/spec/util_stanza_spec.lua
index 38503ab7..7d710888 100644
--- a/spec/util_stanza_spec.lua
+++ b/spec/util_stanza_spec.lua
@@ -170,6 +170,12 @@ describe("util.stanza", function()
assert.are.equal(r.attr.type, "result");
assert.are.equal(#r.tags, 0, "A reply should not include children of the original stanza");
end);
+
+ it("should reject not-stanzas", function ()
+ assert.has.error_match(function ()
+ st.reply(not "a stanza");
+ end, "expected stanza");
+ end);
end);
describe("#error_reply()", function()
diff --git a/util/stanza.lua b/util/stanza.lua
index 55c38c73..f46d5b30 100644
--- a/util/stanza.lua
+++ b/util/stanza.lua
@@ -434,6 +434,9 @@ local function iq(attr)
end
local function reply(orig)
+ if not is_stanza(orig) then
+ error("bad argument to reply: expected stanza, got "..type(orig));
+ end
return new_stanza(orig.name,
orig.attr and {
to = orig.attr.from,