]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: passdb-bsdauth - Add support for passdb_fields
authorKarl Fleischmann <karl.fleischmann@open-xchange.com>
Tue, 9 Jul 2024 12:27:38 +0000 (14:27 +0200)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 12 Feb 2025 10:34:13 +0000 (12:34 +0200)
src/auth/passdb-bsdauth.c

index c8f2c1e39e6e3f2d95103683190f2150d71335be..232cc5486a069c1c7a646c237c10a131c66a5d72 100644 (file)
@@ -9,10 +9,30 @@
 #include "auth-cache.h"
 #include "ipwd.h"
 #include "mycrypt.h"
+#include "settings.h"
 
 #include <login_cap.h>
 #include <bsd_auth.h>
 
+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,