From 2311895df93e3b5ad63fa75fd66c17056bd2bca4 Mon Sep 17 00:00:00 2001 From: Waqas Hussain Date: Mon, 21 Nov 2011 19:59:38 +0500 Subject: MUC: Fix a possible stack overflow (when a local component joins a room, then disconnects, an unavailble-error presence cycle can occur). --- plugins/muc/muc.lib.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/muc/muc.lib.lua b/plugins/muc/muc.lib.lua index 8e05bbb4..731f9e37 100644 --- a/plugins/muc/muc.lib.lua +++ b/plugins/muc/muc.lib.lua @@ -358,6 +358,7 @@ function room_mt:handle_to_occupant(origin, stanza) -- PM, vCards, etc elseif type == "unavailable" then -- unavailable if current_nick then log("debug", "%s leaving %s", current_nick, room); + self._jid_nick[from] = nil; local occupant = self._occupants[current_nick]; local new_jid = next(occupant.sessions); if new_jid == from then new_jid = next(occupant.sessions, new_jid); end @@ -382,7 +383,6 @@ function room_mt:handle_to_occupant(origin, stanza) -- PM, vCards, etc self:broadcast_presence(pr, from); self._occupants[current_nick] = nil; end - self._jid_nick[from] = nil; end elseif not type then -- available if current_nick then -- cgit v1.2.3 From 0c22db44a1d07c7e7d5683ab65f03e6883631521 Mon Sep 17 00:00:00 2001 From: Waqas Hussain Date: Tue, 22 Nov 2011 01:44:28 +0500 Subject: util.xmppstream: A little cleanup. --- util/xmppstream.lua | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/util/xmppstream.lua b/util/xmppstream.lua index e5271b72..018f238d 100644 --- a/util/xmppstream.lua +++ b/util/xmppstream.lua @@ -11,26 +11,23 @@ local lxp = require "lxp"; local st = require "util.stanza"; local stanza_mt = st.stanza_mt; +local error = error; local tostring = tostring; local t_insert = table.insert; local t_concat = table.concat; local t_remove = table.remove; local setmetatable = setmetatable; -local default_log = require "util.logger".init("xmppstream"); - -- COMPAT: w/LuaExpat 1.1.0 local lxp_supports_doctype = pcall(lxp.new, { StartDoctypeDecl = false }); - if not lxp_supports_doctype then + local default_log = require "util.logger".init("xmppstream"); default_log("warn", "The version of LuaExpat on your system leaves Prosody " .."vulnerable to denial-of-service attacks. You should upgrade to " .."LuaExpat 1.1.1 or higher as soon as possible. See " .."http://prosody.im/doc/depends#luaexpat for more information."); end -local error = error; - module "xmppstream" local new_parser = lxp.new; @@ -50,8 +47,6 @@ _M.ns_pattern = ns_pattern; function new_sax_handlers(session, stream_callbacks) local xml_handlers = {}; - local log = session.log or default_log; - local cb_streamopened = stream_callbacks.streamopened; local cb_streamclosed = stream_callbacks.streamclosed; local cb_error = stream_callbacks.error or function(session, e) error("XML stream error: "..tostring(e)); end; @@ -188,7 +183,6 @@ function new_sax_handlers(session, stream_callbacks) local function set_session(stream, new_session) session = new_session; - log = new_session.log or default_log; end return xml_handlers, { reset = reset, set_session = set_session }; -- cgit v1.2.3 From 56975d6c639e95c6cb489768ebb065425a6bee7b Mon Sep 17 00:00:00 2001 From: Waqas Hussain Date: Tue, 22 Nov 2011 02:13:42 +0500 Subject: util.dependencies, util.xmppstream: Move LuaExpat version checking to util.dependencies. --- util/dependencies.lua | 8 ++++++++ util/xmppstream.lua | 7 ------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/util/dependencies.lua b/util/dependencies.lua index 5baea942..53d2719d 100644 --- a/util/dependencies.lua +++ b/util/dependencies.lua @@ -136,6 +136,14 @@ function log_warnings() log("error", "This version of LuaSec contains a known bug that causes disconnects, see http://prosody.im/doc/depends"); end end + if lxp then + if not pcall(lxp.new, { StartDoctypeDecl = false }) then + log("error", "The version of LuaExpat on your system leaves Prosody " + .."vulnerable to denial-of-service attacks. You should upgrade to " + .."LuaExpat 1.1.1 or higher as soon as possible. See " + .."http://prosody.im/doc/depends#luaexpat for more information."); + end + end end return _M; diff --git a/util/xmppstream.lua b/util/xmppstream.lua index 018f238d..0f80742d 100644 --- a/util/xmppstream.lua +++ b/util/xmppstream.lua @@ -20,13 +20,6 @@ local setmetatable = setmetatable; -- COMPAT: w/LuaExpat 1.1.0 local lxp_supports_doctype = pcall(lxp.new, { StartDoctypeDecl = false }); -if not lxp_supports_doctype then - local default_log = require "util.logger".init("xmppstream"); - default_log("warn", "The version of LuaExpat on your system leaves Prosody " - .."vulnerable to denial-of-service attacks. You should upgrade to " - .."LuaExpat 1.1.1 or higher as soon as possible. See " - .."http://prosody.im/doc/depends#luaexpat for more information."); -end module "xmppstream" -- cgit v1.2.3 From a6418c6df20dd9ad4c906c5ee7ef318f2c4219c2 Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Tue, 22 Nov 2011 17:56:52 +0000 Subject: loggingmanager: Remove unused 'critical' level --- core/loggingmanager.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/loggingmanager.lua b/core/loggingmanager.lua index 88f2bbbf..426425c1 100644 --- a/core/loggingmanager.lua +++ b/core/loggingmanager.lua @@ -41,7 +41,7 @@ local logging_config; local apply_sink_rules; local log_sink_types = setmetatable({}, { __newindex = function (t, k, v) rawset(t, k, v); apply_sink_rules(k); end; }); local get_levels; -local logging_levels = { "debug", "info", "warn", "error", "critical" } +local logging_levels = { "debug", "info", "warn", "error" } -- Put a rule into action. Requires that the sink type has already been registered. -- This function is called automatically when a new sink type is added [see apply_sink_rules()] -- cgit v1.2.3