From: Timo Sirainen Date: Tue, 5 Oct 2010 21:55:37 +0000 (+0100) Subject: auth: Added lookup_credentials() support for passdb static X-Git-Tag: 2.0.6~91 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a3d1e23660ddf744f3b86e1104d81f9e161db721;p=thirdparty%2Fdovecot%2Fcore.git auth: Added lookup_credentials() support for passdb static --- diff --git a/src/auth/passdb-static.c b/src/auth/passdb-static.c index e2c55b1885..a96f122fc3 100644 --- a/src/auth/passdb-static.c +++ b/src/auth/passdb-static.c @@ -14,21 +14,20 @@ struct static_passdb_module { }; static void -static_verify_plain(struct auth_request *request, const char *password, - verify_plain_callback_t *callback) +static_save_fields(struct auth_request *request, const char **password_r) { struct static_passdb_module *module = (struct static_passdb_module *)request->passdb->passdb; const struct var_expand_table *table; - const char *const *args, *static_password = ""; + const char *const *args; unsigned int i, count; string_t *str = t_str_new(128); - int ret; auth_request_log_debug(request, "static", "lookup"); table = auth_request_get_var_expand_table(request, NULL); + *password_r = ""; args = array_get(&module->tmpl, &count); i_assert((count % 2) == 0); for (i = 0; i < count; i += 2) { @@ -42,12 +41,22 @@ static_verify_plain(struct auth_request *request, const char *password, } if (strcmp(key, "password") == 0) - static_password = value; + *password_r = value; else { auth_request_set_field(request, key, value, STATIC_PASS_SCHEME); } } +} + +static void +static_verify_plain(struct auth_request *request, const char *password, + verify_plain_callback_t *callback) +{ + const char *static_password; + int ret; + + static_save_fields(request, &static_password); ret = auth_request_password_verify(request, password, static_password, STATIC_PASS_SCHEME, "static"); @@ -59,6 +68,17 @@ static_verify_plain(struct auth_request *request, const char *password, callback(PASSDB_RESULT_OK, request); } +static void +static_lookup_credentials(struct auth_request *request, + lookup_credentials_callback_t *callback) +{ + const char *static_password; + + static_save_fields(request, &static_password); + passdb_handle_credentials(PASSDB_RESULT_OK, static_password, + STATIC_PASS_SCHEME, callback, request); +} + static struct passdb_module * static_preinit(pool_t pool, const char *args) { @@ -96,6 +116,6 @@ struct passdb_module_interface passdb_static = { NULL, static_verify_plain, - NULL, + static_lookup_credentials, NULL };