From f97b2a1f08778717d657f788a78193b945dce633 Mon Sep 17 00:00:00 2001
From: Kim Alvefur <zash@zash.se>
Date: Fri, 29 Apr 2016 14:01:01 +0200
Subject: MUC: Stricter validation of deserialized data

---
 plugins/muc/muc.lib.lua | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/plugins/muc/muc.lib.lua b/plugins/muc/muc.lib.lua
index 071f1f8b..9a7b1f85 100644
--- a/plugins/muc/muc.lib.lua
+++ b/plugins/muc/muc.lib.lua
@@ -1358,7 +1358,7 @@ function _M.restore_room(frozen)
 			if not resource and type(data) == "string" then
 				-- bare jid: affiliation
 				room._affiliations[jid] = data;
-			elseif host == room_host and node == room_name and resource then
+			elseif host == room_host and node == room_name and resource and type(data) == "table" then
 				-- full room jid: bare real jid and role
 				local bare_jid = data.bare_jid;
 				local	occupant = occupant_lib.new(bare_jid, jid);
@@ -1372,7 +1372,7 @@ function _M.restore_room(frozen)
 					end
 				end
 				occupant_sessions[bare_jid] = nil;
-			else
+			elseif type(data) == "table" and data.name then
 				-- full user jid: presence
 				local presence = st.deserialize(data);
 				local bare_jid = jid_bare(jid);
-- 
cgit v1.2.3