Fix for handling latin1 encoded hostnames in SASL

Wed, 03 Dec 2008 22:08:49 +0500

author
Waqas Hussain <waqas20@gmail.com>
date
Wed, 03 Dec 2008 22:08:49 +0500
changeset 529
631e7d16d22b
parent 524
3f9f67f1a106
child 530
22ef9bab0834

Fix for handling latin1 encoded hostnames in SASL

plugins/mod_saslauth.lua file | annotate | diff | comparison | revisions
util/sasl.lua file | annotate | diff | comparison | revisions
--- a/plugins/mod_saslauth.lua	Wed Dec 03 15:09:58 2008 +0000
+++ b/plugins/mod_saslauth.lua	Wed Dec 03 22:08:49 2008 +0500
@@ -64,14 +64,14 @@
 	end
 end
 
-local function password_callback(node, host, mechanism)
+local function password_callback(node, host, mechanism, raw_host)
 	local password = (datamanager.load(node, host, "accounts") or {}).password; -- FIXME handle hashed passwords
 	local func = function(x) return x; end;
 	if password then
 		if mechanism == "PLAIN" then
 			return func, password;
 		elseif mechanism == "DIGEST-MD5" then
-			return func, md5(node..":"..host..":"..password);
+			return func, md5(node..":"..raw_host..":"..password);
 		end
 	end
 	return func, nil;
--- a/util/sasl.lua	Wed Dec 03 15:09:58 2008 +0000
+++ b/util/sasl.lua	Wed Dec 03 22:08:49 2008 +0500
@@ -144,6 +144,7 @@
 			if not response["qop"] then response["qop"] = "auth" end
 			
 			if response["realm"] == nil then response["realm"] = "" end
+			local raw_realm = response["realm"];
 			
 			if response["charset"] == nil then
 				response["username"] = latin1toutf8(response["username"])
@@ -163,7 +164,7 @@
 			
 			--TODO maybe realm support
 			self.username = response["username"]
-			local password_encoding, Y = self.password_handler(response["username"], response["realm"], "DIGEST-MD5")
+			local password_encoding, Y = self.password_handler(response["username"], response["realm"], "DIGEST-MD5", raw_realm)
 			if Y == nil then return "failure", "not-authorized"
 			elseif Y == false then return "failure", "account-disabled" end
 			

mercurial