]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: Add and use auth_request_set_login_username_forced()
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Tue, 4 Aug 2020 11:44:00 +0000 (14:44 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Thu, 27 Aug 2020 06:20:17 +0000 (06:20 +0000)
src/auth/auth-request-fields.c
src/auth/auth-request.c
src/auth/auth-request.h

index a183b8e1768eef41df942055182254a01bfd3214..cfb966facf5230ed7052bbf56cfbfca0608eee6a 100644 (file)
@@ -229,7 +229,7 @@ bool auth_request_import(struct auth_request *request,
        else if (strcmp(key, "original-username") == 0)
                fields->original_username = p_strdup(request->pool, value);
        else if (strcmp(key, "requested-login-user") == 0)
-               fields->requested_login_user = p_strdup(request->pool, value);
+               auth_request_set_login_username_forced(request, value);
        else if (strcmp(key, "successful") == 0)
                auth_request_set_auth_successful(request);
        else if (strcmp(key, "skip-password-check") == 0)
@@ -372,6 +372,15 @@ void auth_request_set_username_forced(struct auth_request *request,
        request->fields.user = p_strdup(request->pool, username);
 }
 
+void auth_request_set_login_username_forced(struct auth_request *request,
+                                           const char *username)
+{
+       i_assert(username != NULL);
+
+       request->fields.requested_login_user =
+               p_strdup(request->pool, username);
+}
+
 bool auth_request_set_login_username(struct auth_request *request,
                                     const char *username,
                                     const char **error_r)
@@ -401,8 +410,7 @@ bool auth_request_set_login_username(struct auth_request *request,
                request->fields.requested_login_user = NULL;
                return FALSE;
        }
-       request->fields.requested_login_user =
-               p_strdup(request->pool, username);
+       auth_request_set_login_username_forced(request, username);
 
        e_debug(request->event,
                "%sMaster user lookup for login: %s",
index 0310a8540ac7eb5cc53eada530d6abec10dfbc49..1a5b6df98ab1f7d48d19153e7f37b4baafb0a5ca 100644 (file)
@@ -1785,8 +1785,7 @@ void auth_request_set_field(struct auth_request *request,
                /* don't change the original value so it gets saved correctly
                   to cache. */
        } else if (strcmp(name, "login_user") == 0) {
-               request->fields.requested_login_user =
-                       p_strdup(request->pool, value);
+               auth_request_set_login_username_forced(request, value);
        } else if (strcmp(name, "allow_nets") == 0) {
                auth_request_validate_networks(request, name, value,
                                               &request->fields.remote_ip);
index 0bac4beafd3a49707a1cc5b304d2dd62901fa7fd..c47e0b4eb9487ff2eb7618d76d5f5317f9f95d13 100644 (file)
@@ -243,6 +243,9 @@ void auth_request_set_username_forced(struct auth_request *request,
 bool auth_request_set_login_username(struct auth_request *request,
                                      const char *username,
                                      const char **error_r);
+/* Change the login username without any translations or checks. */
+void auth_request_set_login_username_forced(struct auth_request *request,
+                                           const char *username);
 void auth_request_set_realm(struct auth_request *request, const char *realm);
 /* Request was fully successfully authenticated, including policy checks etc. */
 void auth_request_set_auth_successful(struct auth_request *request);