Mercurial > dovecot > core-2.2
changeset 20499:f5fa391e098a
passdb-static: Support password scheme
This allows password argument to provide scheme instead of
defaulting to plain. If no scheme is provided, plain is
defaulted.
author | Aki Tuomi <aki.tuomi@dovecot.fi> |
---|---|
date | Tue, 05 Jul 2016 14:41:41 +0300 |
parents | 43c279a779f5 |
children | e67b0284f6d1 |
files | src/auth/passdb-static.c |
diffstat | 1 files changed, 19 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/auth/passdb-static.c Mon Jul 04 11:57:43 2016 +0300 +++ b/src/auth/passdb-static.c Tue Jul 05 14:41:41 2016 +0300 @@ -3,6 +3,7 @@ #include "auth-common.h" #include "passdb.h" #include "passdb-template.h" +#include "password-scheme.h" struct static_passdb_module { struct passdb_module module; @@ -11,7 +12,7 @@ }; static enum passdb_result -static_save_fields(struct auth_request *request, const char **password_r) +static_save_fields(struct auth_request *request, const char **password_r, const char **scheme_r) { struct static_passdb_module *module = (struct static_passdb_module *)request->passdb->passdb; @@ -28,8 +29,18 @@ auth_request_log_info(request, AUTH_SUBSYS_DB, "No password returned (and no nopassword)"); *password_r = NULL; + *scheme_r = NULL; return PASSDB_RESULT_PASSWORD_MISMATCH; } + + *scheme_r = password_get_scheme(password_r); + + if (*scheme_r == NULL) + *scheme_r = STATIC_PASS_SCHEME; + + auth_request_set_field(request, "password", + *password_r, *scheme_r); + return PASSDB_RESULT_OK; } @@ -39,16 +50,18 @@ { enum passdb_result result; const char *static_password; + const char *static_scheme; + int ret; - result = static_save_fields(request, &static_password); + result = static_save_fields(request, &static_password, &static_scheme); if (result != PASSDB_RESULT_OK) { callback(result, request); return; } ret = auth_request_password_verify(request, password, static_password, - STATIC_PASS_SCHEME, AUTH_SUBSYS_DB); + static_scheme, AUTH_SUBSYS_DB); if (ret <= 0) { callback(PASSDB_RESULT_PASSWORD_MISMATCH, request); return; @@ -63,10 +76,11 @@ { enum passdb_result result; const char *static_password; + const char *static_scheme; - result = static_save_fields(request, &static_password); + result = static_save_fields(request, &static_password, &static_scheme); passdb_handle_credentials(result, static_password, - STATIC_PASS_SCHEME, callback, request); + static_scheme, callback, request); } static struct passdb_module *