annotate mod_conformance_restricted/mod_conformance_restricted.lua @ 4651:8231774f5bfd

mod_cloud_notify_encrypted: Ensure body substring remains valid UTF-8 The `body:sub()` call risks splitting the string in the middle of a multi-byte UTF-8 sequence. This should have been caught by util.stanza validation, but that would have caused some havoc, at the very least causing the notification to not be sent. There have been no reports of this happening. Likely because this module isn't widely deployed among users with languages that use many longer UTF-8 sequences. The util.encodings.utf8.valid() function is O(n) where only the last sequence really needs to be checked, but it's in C and expected to be fast.
author Kim Alvefur <zash@zash.se>
date Sun, 22 Aug 2021 13:22:59 +0200
parents 7dbde05b48a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
602
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
1 -- Prosody IM
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
2 -- Copyright (C) 2012 Florian Zeitz
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 699
diff changeset
3 --
602
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
4 -- This project is MIT/X11 licensed. Please see the
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
5 -- COPYING file in the source package for more information.
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
6 --
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
7
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
8 local st = require "util.stanza";
699
7c88e09a07e7 mod_conformance_restricted: Require util.jid
Florian Zeitz <florob@babelmonkeys.de>
parents: 602
diff changeset
9 local jid = require "util.jid";
602
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
10
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
11 module:hook("message/host", function (event)
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
12 local origin, stanza = event.origin, event.stanza;
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
13 local node, host, resource = jid.split(stanza.attr.to);
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
14 local body = stanza:get_child_text("body");
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 699
diff changeset
15
602
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
16 if resource ~= "conformance" then
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
17 return; -- Not interop testing
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
18 end
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
19
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
20 if body == "PI" then
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
21 origin.send("<?testing this='out'?>");
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
22 elseif body == "comment" then
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
23 origin.send("<!-- no comment -->");
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
24 elseif body == "DTD" then
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
25 origin.send("<!DOCTYPE greeting [\n<!ENTITY test 'You should not see this'>\n]>");
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
26 elseif body == "entity" then
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
27 origin.send("<message type='chat' to='"..stanza.attr.from.."'><body>&test;</body></message>");
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
28 else
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
29 local reply = st.reply(stanza);
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
30 reply:body("Send me one of: PI, comment, DTD, or entity");
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
31 origin.send(reply);
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
32 end
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 699
diff changeset
33
602
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
34 return true;
072b05999b4b mod_conformance_restricted: Module to send XML restricted by RFC 6120 (for conformance testing)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
35 end);