From: Timo Sirainen Date: Tue, 4 Aug 2020 11:44:00 +0000 (+0300) Subject: auth: Add and use auth_request_set_login_username_forced() X-Git-Tag: 2.3.13~313 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8f86c02d6487de19326a290c224d9703bf7292aa;p=thirdparty%2Fdovecot%2Fcore.git auth: Add and use auth_request_set_login_username_forced() --- diff --git a/src/auth/auth-request-fields.c b/src/auth/auth-request-fields.c index a183b8e176..cfb966facf 100644 --- a/src/auth/auth-request-fields.c +++ b/src/auth/auth-request-fields.c @@ -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", diff --git a/src/auth/auth-request.c b/src/auth/auth-request.c index 0310a8540a..1a5b6df98a 100644 --- a/src/auth/auth-request.c +++ b/src/auth/auth-request.c @@ -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); diff --git a/src/auth/auth-request.h b/src/auth/auth-request.h index 0bac4beafd..c47e0b4eb9 100644 --- a/src/auth/auth-request.h +++ b/src/auth/auth-request.h @@ -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);