# HG changeset patch # User Kim Alvefur # Date 1572642518 -3600 # Node ID 5611c939743a96beda7f40e7c73d310bef974d59 # Parent 744ca71a49f72836faf670dc40cab67915fe9b43 MUC: Strictly validate room JID on creation This should prevent any MUCs with invalid JID (according to current normalization routine) diff -r 744ca71a49f7 -r 5611c939743a plugins/muc/mod_muc.lua --- a/plugins/muc/mod_muc.lua Fri Nov 01 18:31:12 2019 +0100 +++ b/plugins/muc/mod_muc.lua Fri Nov 01 22:08:38 2019 +0100 @@ -93,6 +93,7 @@ local jid_split = require "util.jid".split; +local jid_prep = require "util.jid".prep; local jid_bare = require "util.jid".bare; local st = require "util.stanza"; local cache = require "util.cache"; @@ -273,6 +274,9 @@ end function create_room(room_jid, config) + if jid_bare(room_jid) ~= room_jid or not jid_prep(room_jid, true) then + return nil, "invalid-jid"; + end local exists = get_room_from_jid(room_jid); if exists then return nil, "room-exists"; @@ -460,6 +464,10 @@ if room == nil then -- Watch presence to create rooms + if not jid_prep(room_jid, true) then + origin.send(st.error_reply(stanza, "modify", "jid-malformed")); + return true; + end if stanza.attr.type == nil and stanza.name == "presence" and stanza:get_child("x", "http://jabber.org/protocol/muc") then room = muclib.new_room(room_jid); return room:handle_first_presence(origin, stanza);