dovecot-2.2: auth: protocol-specific username settings weren't u...

dovecot at dovecot.org dovecot at dovecot.org
Wed Aug 20 12:36:14 UTC 2014


details:   http://hg.dovecot.org/dovecot-2.2/rev/c3da5ffaa0f2
changeset: 17735:c3da5ffaa0f2
user:      Timo Sirainen <tss at iki.fi>
date:      Wed Aug 20 14:35:27 2014 +0200
description:
auth: protocol-specific username settings weren't used for userdb lookups.
The username was set before the service-specific settings were looked up, so
global settings were always used. This affected auth_default_realm,
auth_username_translation and auth_username_format settings.

diffstat:

 src/auth/auth-master-connection.c  |  13 +++++++------
 src/auth/auth-postfix-connection.c |   6 +++---
 2 files changed, 10 insertions(+), 9 deletions(-)

diffs (57 lines):

diff -r febedba15c7e -r c3da5ffaa0f2 src/auth/auth-master-connection.c
--- a/src/auth/auth-master-connection.c	Wed Aug 20 14:22:28 2014 +0300
+++ b/src/auth/auth-master-connection.c	Wed Aug 20 14:35:27 2014 +0200
@@ -167,7 +167,7 @@
 			  const char **error_r)
 {
 	struct auth_request *auth_request;
-	const char *const *list, *name, *arg;
+	const char *const *list, *name, *arg, *username;
 	unsigned int id;
 
 	/* <id> <userid> [<parameters>] */
@@ -182,11 +182,7 @@
 	auth_request->id = id;
 	auth_request->master = conn;
 	auth_master_connection_ref(conn);
-
-	if (!auth_request_set_username(auth_request, list[1], error_r)) {
-		*request_r = auth_request;
-		return 0;
-	}
+	username = list[1];
 
 	for (list += 2; *list != NULL; list++) {
 		arg = strchr(*list, '=');
@@ -209,6 +205,11 @@
 	}
 
 	auth_request_init(auth_request);
+
+	if (!auth_request_set_username(auth_request, username, error_r)) {
+		*request_r = auth_request;
+		return 0;
+	}
 	*request_r = auth_request;
 	return 1;
 }
diff -r febedba15c7e -r c3da5ffaa0f2 src/auth/auth-postfix-connection.c
--- a/src/auth/auth-postfix-connection.c	Wed Aug 20 14:22:28 2014 +0300
+++ b/src/auth/auth-postfix-connection.c	Wed Aug 20 14:35:27 2014 +0200
@@ -51,13 +51,13 @@
 	auth_request->context = conn;
 	auth_postfix_connection_ref(conn);
 
+	(void)auth_request_import_info(auth_request, "service", "postfix");
+	auth_request_init(auth_request);
+
 	if (!auth_request_set_username(auth_request, username, error_r)) {
 		*request_r = auth_request;
 		return FALSE;
 	}
-	(void)auth_request_import_info(auth_request, "service", "postfix");
-
-	auth_request_init(auth_request);
 	*request_r = auth_request;
 	return TRUE;
 }


More information about the dovecot-cvs mailing list