Software / code / prosody
Comparison
plugins/muc/muc.lib.lua @ 7413:228396da1e27
MUC: Stricter validation of deserialized data
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Fri, 29 Apr 2016 14:01:01 +0200 |
| parent | 7412:f9744effae04 |
| child | 7414:1b62c89014c4 |
comparison
equal
deleted
inserted
replaced
| 7412:f9744effae04 | 7413:228396da1e27 |
|---|---|
| 1356 local node, host, resource = jid_split(jid); | 1356 local node, host, resource = jid_split(jid); |
| 1357 if node or host:sub(1,1) ~= "_" then | 1357 if node or host:sub(1,1) ~= "_" then |
| 1358 if not resource and type(data) == "string" then | 1358 if not resource and type(data) == "string" then |
| 1359 -- bare jid: affiliation | 1359 -- bare jid: affiliation |
| 1360 room._affiliations[jid] = data; | 1360 room._affiliations[jid] = data; |
| 1361 elseif host == room_host and node == room_name and resource then | 1361 elseif host == room_host and node == room_name and resource and type(data) == "table" then |
| 1362 -- full room jid: bare real jid and role | 1362 -- full room jid: bare real jid and role |
| 1363 local bare_jid = data.bare_jid; | 1363 local bare_jid = data.bare_jid; |
| 1364 local occupant = occupant_lib.new(bare_jid, jid); | 1364 local occupant = occupant_lib.new(bare_jid, jid); |
| 1365 occupant.jid = data.jid; | 1365 occupant.jid = data.jid; |
| 1366 occupant.role = data.role; | 1366 occupant.role = data.role; |
| 1370 for full_jid, presence in pairs(sessions) do | 1370 for full_jid, presence in pairs(sessions) do |
| 1371 occupant:set_session(full_jid, presence); | 1371 occupant:set_session(full_jid, presence); |
| 1372 end | 1372 end |
| 1373 end | 1373 end |
| 1374 occupant_sessions[bare_jid] = nil; | 1374 occupant_sessions[bare_jid] = nil; |
| 1375 else | 1375 elseif type(data) == "table" and data.name then |
| 1376 -- full user jid: presence | 1376 -- full user jid: presence |
| 1377 local presence = st.deserialize(data); | 1377 local presence = st.deserialize(data); |
| 1378 local bare_jid = jid_bare(jid); | 1378 local bare_jid = jid_bare(jid); |
| 1379 local occupant = occupants[bare_jid]; | 1379 local occupant = occupants[bare_jid]; |
| 1380 local sessions = occupant_sessions[bare_jid]; | 1380 local sessions = occupant_sessions[bare_jid]; |