From 27766b1c030702960601094c113c0494cfac7676 Mon Sep 17 00:00:00 2001 From: Waqas Hussain Date: Fri, 2 Oct 2009 16:44:14 +0500 Subject: util.encodings: Fixed: Last change was not ANSI C compatible. --- util-src/encodings.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/util-src/encodings.c b/util-src/encodings.c index 65d7d501..6c6e53ea 100644 --- a/util-src/encodings.c +++ b/util-src/encodings.c @@ -125,9 +125,14 @@ static const luaL_Reg Reg_base64[] = static int stringprep_prep(lua_State *L, const Stringprep_profile *profile) { size_t len; - const char *s = luaL_checklstring(L, 1, &len); + const char *s; char string[1024]; int ret; + if(!lua_isstring(L, 1)) { + lua_pushnil(L); + return 1; + } + s = lua_tolstring(L, 1, &len); if (len >= 1024) { lua_pushnil(L); return 1; // TODO return error message -- cgit v1.2.3 From eadb0d45b9be41a23841ded94b45209753f96257 Mon Sep 17 00:00:00 2001 From: Waqas Hussain Date: Fri, 2 Oct 2009 16:45:54 +0500 Subject: util.encodings: Included idn-free.h, which explicitly declares the idn_free function. --- util-src/encodings.c | 1 + 1 file changed, 1 insertion(+) diff --git a/util-src/encodings.c b/util-src/encodings.c index 6c6e53ea..704c7cf8 100644 --- a/util-src/encodings.c +++ b/util-src/encodings.c @@ -168,6 +168,7 @@ static const luaL_Reg Reg_stringprep[] = /***************** IDNA *****************/ #include +#include static int Lidna_to_ascii(lua_State *L) /** idna.to_ascii(s) */ { -- cgit v1.2.3 From 724ffca435bed3c9bbd6dbfa048c922a2b48a05e Mon Sep 17 00:00:00 2001 From: Waqas Hussain Date: Fri, 2 Oct 2009 16:46:39 +0500 Subject: util.encodings: Removed a bit of unreachable code. --- util-src/encodings.c | 1 - 1 file changed, 1 deletion(-) diff --git a/util-src/encodings.c b/util-src/encodings.c index 704c7cf8..5147512f 100644 --- a/util-src/encodings.c +++ b/util-src/encodings.c @@ -108,7 +108,6 @@ static int Lbase64_decode(lua_State *L) /** decode(s) */ break; } } - return 0; } static const luaL_Reg Reg_base64[] = -- cgit v1.2.3 From de9cac43cccfd45ad867c7f08013860d0a0ea217 Mon Sep 17 00:00:00 2001 From: Waqas Hussain Date: Fri, 2 Oct 2009 16:50:30 +0500 Subject: mod_register: Fixed: No error was returned if username failed nodeprep. --- plugins/mod_register.lua | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/plugins/mod_register.lua b/plugins/mod_register.lua index 383ab811..d29a74af 100644 --- a/plugins/mod_register.lua +++ b/plugins/mod_register.lua @@ -140,14 +140,17 @@ module:add_iq_handler("c2s_unauthed", "jabber:iq:register", function (session, s -- FIXME shouldn't use table.concat username = nodeprep(table.concat(username)); password = table.concat(password); - if usermanager_user_exists(username, session.host) then + local host = module.host; + if not username then + session.send(st.error_reply(stanza, "modify", "not-acceptable")); + elseif usermanager_user_exists(username, host) then session.send(st.error_reply(stanza, "cancel", "conflict")); else - if usermanager_create_user(username, password, session.host) then + if usermanager_create_user(username, password, host) then session.send(st.reply(stanza)); -- user created! - module:log("info", "User account created: %s@%s", username, session.host); + module:log("info", "User account created: %s@%s", username, host); module:fire_event("user-registered", { - username = username, host = session.host, source = "mod_register", + username = username, host = host, source = "mod_register", session = session }); else -- TODO unable to write file, file may be locked, etc, what's the correct error? -- cgit v1.2.3 From 27b8833ce2a493447840e207d936e176dd6430ee Mon Sep 17 00:00:00 2001 From: Waqas Hussain Date: Fri, 2 Oct 2009 16:52:50 +0500 Subject: mod_register: Changed error type for hitting registration rate limit from 'cancel' to 'wait'. --- plugins/mod_register.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/mod_register.lua b/plugins/mod_register.lua index d29a74af..1d883eff 100644 --- a/plugins/mod_register.lua +++ b/plugins/mod_register.lua @@ -131,7 +131,7 @@ module:add_iq_handler("c2s_unauthed", "jabber:iq:register", function (session, s if os_time() - ip.time < min_seconds_between_registrations then ip.time = os_time(); - session.send(st.error_reply(stanza, "cancel", "not-acceptable")); + session.send(st.error_reply(stanza, "wait", "not-acceptable")); return; end ip.time = os_time(); -- cgit v1.2.3 From 498421b3bac3f259cc2a7b65cea6f7601a974d88 Mon Sep 17 00:00:00 2001 From: Waqas Hussain Date: Fri, 2 Oct 2009 17:07:18 +0500 Subject: mod_register: Added helpful text to registration error responses. --- plugins/mod_register.lua | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/plugins/mod_register.lua b/plugins/mod_register.lua index 1d883eff..bbd5ea42 100644 --- a/plugins/mod_register.lua +++ b/plugins/mod_register.lua @@ -119,13 +119,12 @@ module:add_iq_handler("c2s_unauthed", "jabber:iq:register", function (session, s if username and password then -- Check that the user is not blacklisted or registering too often if blacklisted_ips[session.ip] or (whitelist_only and not whitelisted_ips[session.ip]) then - session.send(st.error_reply(stanza, "cancel", "not-acceptable")); - return; + session.send(st.error_reply(stanza, "cancel", "not-acceptable", "You are not allowed to register an account.")); + return; elseif min_seconds_between_registrations and not whitelisted_ips[session.ip] then if not recent_ips[session.ip] then recent_ips[session.ip] = { time = os_time(), count = 1 }; else - local ip = recent_ips[session.ip]; ip.count = ip.count + 1; @@ -142,9 +141,9 @@ module:add_iq_handler("c2s_unauthed", "jabber:iq:register", function (session, s password = table.concat(password); local host = module.host; if not username then - session.send(st.error_reply(stanza, "modify", "not-acceptable")); + session.send(st.error_reply(stanza, "modify", "not-acceptable", "The requested username is invalid.")); elseif usermanager_user_exists(username, host) then - session.send(st.error_reply(stanza, "cancel", "conflict")); + session.send(st.error_reply(stanza, "cancel", "conflict", "The requested username already exists.")); else if usermanager_create_user(username, password, host) then session.send(st.reply(stanza)); -- user created! @@ -154,7 +153,7 @@ module:add_iq_handler("c2s_unauthed", "jabber:iq:register", function (session, s session = session }); else -- TODO unable to write file, file may be locked, etc, what's the correct error? - session.send(st.error_reply(stanza, "wait", "internal-server-error")); + session.send(st.error_reply(stanza, "wait", "internal-server-error", "Failed to write data to disk.")); end end else -- cgit v1.2.3