]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: protocol-specific username settings weren't used for userdb lookups.
authorTimo Sirainen <tss@iki.fi>
Wed, 20 Aug 2014 12:35:27 +0000 (14:35 +0200)
committerTimo Sirainen <tss@iki.fi>
Wed, 20 Aug 2014 12:35:27 +0000 (14:35 +0200)
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.

src/auth/auth-master-connection.c
src/auth/auth-postfix-connection.c

index ed762390b9e7aa67c25eb1a1fa81d6f5e3b7e7a1..47eae7222cbbb2477d33d751ce9ee0e69c9f5544 100644 (file)
@@ -167,7 +167,7 @@ master_input_auth_request(struct auth_master_connection *conn, const char *args,
                          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 @@ master_input_auth_request(struct auth_master_connection *conn, const char *args,
        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 @@ master_input_auth_request(struct auth_master_connection *conn, const char *args,
        }
 
        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;
 }
index b3d2d0dd268a64a1b06411f5d5f1611b794dbdf9..e418225f12260aa8d060a152f5dc91826873e23f 100644 (file)
@@ -51,13 +51,13 @@ postfix_input_auth_request(struct auth_postfix_connection *conn,
        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;
 }