]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: sasl-server-mech-digest-md5 - Centralize realm handling in sasl-server-request.c
authorStephan Bosch <stephan.bosch@open-xchange.com>
Mon, 6 Mar 2023 02:22:51 +0000 (03:22 +0100)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Thu, 9 Oct 2025 08:41:22 +0000 (08:41 +0000)
src/auth/auth-sasl.c
src/auth/sasl-server-mech-digest-md5.c

index dca821e8cb7b1def55def106ed84f90eeb8d4039..a161d2ad909bdc76a4ee87b1bb9ba6752e033118 100644 (file)
@@ -20,6 +20,12 @@ auth_sasl_request_set_authid(struct auth_request *request,
 
        switch (authid_type) {
        case SASL_SERVER_AUTHID_TYPE_USERNAME:
+               if (request->fields.realm != NULL &&
+                   strchr(authid, '@') == NULL) {
+                       authid = t_strconcat(
+                               authid, "@", request->fields.realm, NULL);
+                       request->domain_is_realm = TRUE;
+               }
                if (!auth_request_set_username(request, authid, &error)) {
                        e_info(request->event, "%s", error);
                        return FALSE;
index f89433eef0e4874fb24fcdb5efb61ace291eb676..dd41de4c8a3d7895de22fc3adbd7a5d662cff617 100644 (file)
@@ -553,7 +553,7 @@ mech_digest_md5_auth_continue(struct auth_request *auth_request,
        struct digest_auth_request *request =
                container_of(auth_request, struct digest_auth_request,
                             auth_request);
-       const char *username, *error;
+       const char *error;
 
        if (!parse_digest_response(request, data, data_size, &error)) {
                e_info(auth_request->mech_event, "%s", error);
@@ -561,17 +561,9 @@ mech_digest_md5_auth_continue(struct auth_request *auth_request,
                return;
        }
 
-       if (auth_request->fields.realm != NULL &&
-           strchr(request->username, '@') == NULL) {
-               username = t_strconcat(request->username, "@",
-                                      auth_request->fields.realm, NULL);
-               auth_request->domain_is_realm = TRUE;
-       } else {
-               username = request->username;
-       }
        if (!sasl_server_request_set_authid(auth_request,
                                            SASL_SERVER_AUTHID_TYPE_USERNAME,
-                                           username)) {
+                                           request->username)) {
                sasl_server_request_failure(auth_request);
                return;
        }