Mercurial > dovecot > core-2.2
diff src/auth/auth-request.c @ 4164:d38dd6312be1 HEAD
Master login fixes, PLAIN authentication was still broken..
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 12 Apr 2006 14:27:17 +0300 |
parents | bdf68bc43354 |
children | 3f27bf7832a2 |
line wrap: on
line diff
--- a/src/auth/auth-request.c Wed Apr 12 11:03:54 2006 +0300 +++ b/src/auth/auth-request.c Wed Apr 12 14:27:17 2006 +0300 @@ -561,7 +561,7 @@ bool auth_request_set_username(struct auth_request *request, const char *username, const char **error_r) { - const char *p; + const char *p, *login_username = NULL; if (request->original_username == NULL) { /* the username may change later, but we need to use this @@ -579,13 +579,7 @@ p = strchr(username, request->auth->master_user_separator); if (p != NULL) { /* it does, set it. */ - const char *login_username; - login_username = t_strdup_until(username, p); - if (!auth_request_set_login_username(request, - login_username, - error_r)) - return FALSE; /* username is the master user */ username = p + 1; @@ -599,7 +593,16 @@ } request->user = auth_request_fix_username(request, username, error_r); - return request->user != NULL; + if (request->user == NULL) + return FALSE; + + if (login_username != NULL) { + if (!auth_request_set_login_username(request, + login_username, + error_r)) + return FALSE; + } + return TRUE; } bool auth_request_set_login_username(struct auth_request *request, @@ -608,17 +611,17 @@ { i_assert(*username != '\0'); + if (strcmp(username, request->user) == 0) { + /* The usernames are the same, we don't really wish to log + in as someone else */ + return TRUE; + } + /* lookup request->user from masterdb first */ request->passdb = request->auth->masterdbs; request->requested_login_user = auth_request_fix_username(request, username, error_r); - if (request->user != NULL && - strcmp(request->requested_login_user, request->user) == 0) { - /* The usernames are the same, we don't really wish to log - in as someone else */ - request->requested_login_user = NULL; - } return request->requested_login_user != NULL; }