From: Karl Fleischmann Date: Tue, 9 Jul 2024 12:27:38 +0000 (+0200) Subject: auth: passdb-bsdauth - Add support for passdb_fields X-Git-Tag: 2.4.1~804 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=62e130b0b1c8bdeecdd3ae8838db843d3e8f3ef7;p=thirdparty%2Fdovecot%2Fcore.git auth: passdb-bsdauth - Add support for passdb_fields --- diff --git a/src/auth/passdb-bsdauth.c b/src/auth/passdb-bsdauth.c index c8f2c1e39e..232cc5486a 100644 --- a/src/auth/passdb-bsdauth.c +++ b/src/auth/passdb-bsdauth.c @@ -9,10 +9,30 @@ #include "auth-cache.h" #include "ipwd.h" #include "mycrypt.h" +#include "settings.h" #include #include +struct passdb_bsdauth_settings { + pool_t pool; +}; + +static const struct setting_define passdb_bsdauth_setting_defines[] = { + { .type = SET_FILTER_NAME, .key = "passdb_bsdauth" }, + + SETTING_DEFINE_LIST_END, +}; + +const struct setting_parser_info passdb_bsdauth_setting_parser_info = { + .name = "auth_bsdauth", + + .defines = passdb_bsdauth_setting_defines, + + .struct_size = sizeof(struct passdb_bsdauth_settings), + .pool_offset1 = 1 + offsetof(struct passdb_bsdauth_settings, pool), +}; + static void bsdauth_verify_plain(struct auth_request *request, const char *password, verify_plain_callback_t *callback) @@ -23,6 +43,11 @@ bsdauth_verify_plain(struct auth_request *request, const char *password, e_debug(authdb_event(request), "lookup"); + if (auth_request_set_passdb_fields(request, NULL) < 0) { + callback(PASSDB_RESULT_INTERNAL_FAILURE, request); + return; + } + switch (i_getpwnam(request->fields.user, &pw)) { case -1: e_error(authdb_event(request), @@ -83,6 +108,7 @@ static void bsdauth_deinit(struct passdb_module *module ATTR_UNUSED) struct passdb_module_interface passdb_bsdauth = { .name = "bsdauth", + .fields_supported = TRUE, .preinit_legacy = bsdauth_preinit, .deinit = bsdauth_deinit, .verify_plain = bsdauth_verify_plain,