Mercurial > dovecot > original-hg > dovecot-1.2
changeset 6855:5c514ebda66a HEAD
Added "password_noscheme" field which assumes the password is in the default
scheme even if it begins with '{'.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 25 Nov 2007 03:15:07 +0200 |
parents | 074ae6017b0a |
children | a249d916f6e6 |
files | src/auth/auth-request.c |
diffstat | 1 files changed, 31 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/src/auth/auth-request.c Sun Nov 25 03:09:20 2007 +0200 +++ b/src/auth/auth-request.c Sun Nov 25 03:15:07 2007 +0200 @@ -944,6 +944,31 @@ request->passdb_failure = !found; } +static void +auth_request_set_password(struct auth_request *request, const char *value, + const char *default_scheme, bool noscheme) +{ + if (request->passdb_password != NULL) { + auth_request_log_error(request, + request->passdb->passdb->iface.name, + "Multiple password values not supported"); + return; + } + + /* if the password starts with '{' it most likely contains + also '}'. check it anyway to make sure, because we + assert-crash later if it doesn't exist. this could happen + if plaintext passwords are used. */ + if (*value == '{' && !noscheme && strchr(value, '}') != NULL) + request->passdb_password = p_strdup(request->pool, value); + else { + i_assert(default_scheme != NULL); + request->passdb_password = + p_strdup_printf(request->pool, "{%s}%s", + default_scheme, value); + } +} + void auth_request_set_field(struct auth_request *request, const char *name, const char *value, const char *default_scheme) @@ -954,26 +979,12 @@ i_assert(value != NULL); if (strcmp(name, "password") == 0) { - if (request->passdb_password != NULL) { - auth_request_log_error(request, - request->passdb->passdb->iface.name, - "Multiple password values not supported"); - return; - } - - /* if the password starts with '{' it most likely contains - also '}'. check it anyway to make sure, because we - assert-crash later if it doesn't exist. this could happen - if plaintext passwords are used. */ - if (*value == '{' && strchr(value, '}') != NULL) { - request->passdb_password = - p_strdup(request->pool, value); - } else { - i_assert(default_scheme != NULL); - request->passdb_password = - p_strdup_printf(request->pool, "{%s}%s", - default_scheme, value); - } + auth_request_set_password(request, value, + default_scheme, FALSE); + return; + } + if (strcmp(name, "password_noscheme") == 0) { + auth_request_set_password(request, value, default_scheme, TRUE); return; }