util.sasl.plain,scram: Record username in sasl state earlier
authorKim Alvefur <zash@zash.se>
Wed, 19 Apr 2017 06:47:02 +0200
changeset 8098 57192cf193c7
parent 8097 dcda2ae4569d
child 8099 dd3191974f2a
util.sasl.plain,scram: Record username in sasl state earlier
util/sasl/plain.lua
util/sasl/scram.lua
--- a/util/sasl/plain.lua	Wed Apr 19 12:40:03 2017 +0100
+++ b/util/sasl/plain.lua	Wed Apr 19 06:47:02 2017 +0200
@@ -63,6 +63,8 @@
 		end
 	end
 
+	self.username = authentication
+
 	local correct, state = false, false;
 	if self.profile.plain then
 		local correct_password;
@@ -72,7 +74,6 @@
 		correct, state = self.profile.plain_test(self, authentication, password, self.realm);
 	end
 
-	self.username = authentication
 	if state == false then
 		return "failure", "account-disabled";
 	elseif state == nil or not correct then
--- a/util/sasl/scram.lua	Wed Apr 19 12:40:03 2017 +0100
+++ b/util/sasl/scram.lua	Wed Apr 19 06:47:02 2017 +0200
@@ -146,6 +146,7 @@
 				log("debug", "Username violates either SASLprep or contains forbidden character sequences.")
 				return "failure", "malformed-request", "Invalid username.";
 			end
+			self.username = username;
 
 			-- retreive credentials
 			local stored_key, server_key, salt, iteration_count;
@@ -225,7 +226,6 @@
 
 			if StoredKey == H_f(ClientKey) then
 				local server_final_message = "v="..base64.encode(ServerSignature);
-				self["username"] = state.username;
 				return "success", server_final_message;
 			else
 				return "failure", "not-authorized", "The response provided by the client doesn't match the one we calculated.";