From: Stephan Bosch Date: Sun, 29 Oct 2023 23:52:55 +0000 (+0100) Subject: mech: Move mech_register_init() to auth-sasl X-Git-Tag: 2.4.2~206 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2f36fb0e58389967009c5188cb86a148bdbb95b2;p=thirdparty%2Fdovecot%2Fcore.git mech: Move mech_register_init() to auth-sasl --- diff --git a/src/auth/auth-sasl.c b/src/auth/auth-sasl.c index adf772251a..3f8e70a325 100644 --- a/src/auth/auth-sasl.c +++ b/src/auth/auth-sasl.c @@ -397,6 +397,53 @@ void auth_sasl_instance_init(struct auth *auth, sasl_server_instance_create(auth_sasl_server, &sasl_set); } +const char *mech_get_plugin_name(const char *name); +void mech_register_add(struct mechanisms_register *reg, + const struct sasl_server_mech_def *mech); + +struct mechanisms_register * +mech_register_init(const struct auth_settings *set); +struct mechanisms_register * +mech_register_init(const struct auth_settings *set) +{ + struct mechanisms_register *reg; + const struct sasl_server_mech_def *mech; + const char *name; + pool_t pool; + + pool = pool_alloconly_create("mechanisms register", 1024); + reg = p_new(pool, struct mechanisms_register, 1); + reg->pool = pool; + reg->set = set; + reg->handshake = str_new(pool, 512); + reg->handshake_cbind = str_new(pool, 256); + + if (!array_is_created(&set->mechanisms) || + array_is_empty(&set->mechanisms)) + i_fatal("No authentication mechanisms configured"); + + array_foreach_elem(&set->mechanisms, name) { + name = t_str_ucase(name); + + if (strcmp(name, "ANONYMOUS") == 0) { + if (*set->anonymous_username == '\0') { + i_fatal("ANONYMOUS listed in mechanisms, " + "but anonymous_username not set"); + } + } + mech = mech_module_find(name); + if (mech == NULL) { + /* maybe it's a plugin. try to load it. */ + auth_module_load(mech_get_plugin_name(name)); + mech = mech_module_find(name); + } + if (mech == NULL) + i_fatal("Unknown authentication mechanism '%s'", name); + mech_register_add(reg, mech); + } + return reg; +} + static bool auth_sasl_mech_verify_passdb(const struct auth *auth, enum sasl_mech_passdb_need passdb_need) @@ -453,8 +500,6 @@ void auth_sasl_instance_deinit(struct auth *auth) * Global */ -void mech_register_add(struct mechanisms_register *reg, - const struct sasl_server_mech_def *mech); void mech_register_add(struct mechanisms_register *reg, const struct sasl_server_mech_def *mech) { @@ -492,7 +537,6 @@ void mech_register_add(struct mechanisms_register *reg, reg->modules = list; } -const char *mech_get_plugin_name(const char *name); const char *mech_get_plugin_name(const char *name) { string_t *str = t_str_new(32); diff --git a/src/auth/mech.c b/src/auth/mech.c index 3b42b94c58..ba5e78c21f 100644 --- a/src/auth/mech.c +++ b/src/auth/mech.c @@ -80,46 +80,6 @@ const char *mech_get_plugin_name(const char *name); struct mechanisms_register * mech_register_init(const struct auth_settings *set); -struct mechanisms_register * -mech_register_init(const struct auth_settings *set) -{ - struct mechanisms_register *reg; - const struct sasl_server_mech_def *mech; - const char *name; - pool_t pool; - - pool = pool_alloconly_create("mechanisms register", 1024); - reg = p_new(pool, struct mechanisms_register, 1); - reg->pool = pool; - reg->set = set; - reg->handshake = str_new(pool, 512); - reg->handshake_cbind = str_new(pool, 256); - - if (!array_is_created(&set->mechanisms) || - array_is_empty(&set->mechanisms)) - i_fatal("No authentication mechanisms configured"); - - array_foreach_elem(&set->mechanisms, name) { - name = t_str_ucase(name); - - if (strcmp(name, "ANONYMOUS") == 0) { - if (*set->anonymous_username == '\0') { - i_fatal("ANONYMOUS listed in mechanisms, " - "but anonymous_username not set"); - } - } - mech = mech_module_find(name); - if (mech == NULL) { - /* maybe it's a plugin. try to load it. */ - auth_module_load(mech_get_plugin_name(name)); - mech = mech_module_find(name); - } - if (mech == NULL) - i_fatal("Unknown authentication mechanism '%s'", name); - mech_register_add(reg, mech); - } - return reg; -} void mech_register_deinit(struct mechanisms_register **_reg) {