From 7c35bedb0623ed00dde286b23071137c906de481 Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan.bosch@open-xchange.com> Date: Tue, 15 Oct 2024 22:54:21 +0200 Subject: [PATCH] lib-sieve: storage: ldap: Rely on username being available at runtime --- src/lib-sieve/storage/ldap/sieve-ldap-db.c | 6 +++--- src/lib-sieve/storage/ldap/sieve-ldap-storage.c | 12 ++++-------- src/lib-sieve/storage/ldap/sieve-ldap-storage.h | 1 - 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/src/lib-sieve/storage/ldap/sieve-ldap-db.c b/src/lib-sieve/storage/ldap/sieve-ldap-db.c index 791a1bb9c..0263ce0fd 100644 --- a/src/lib-sieve/storage/ldap/sieve-ldap-db.c +++ b/src/lib-sieve/storage/ldap/sieve-ldap-db.c @@ -1201,9 +1201,9 @@ db_ldap_get_var_expand_table(struct ldap_connection *conn, const char *name) memcpy(tab, auth_request_var_expand_static_tab, auth_count * sizeof(*tab)); - tab[0].value = ldap_escape(lstorage->username); - tab[1].value = ldap_escape(t_strcut(lstorage->username, '@')); - tab[2].value = strchr(lstorage->username, '@'); + tab[0].value = ldap_escape(svinst->username); + tab[1].value = ldap_escape(t_strcut(svinst->username, '@')); + tab[2].value = strchr(svinst->username, '@'); if (tab[2].value != NULL) tab[2].value = ldap_escape(tab[2].value+1); tab[3].value = ldap_escape(svinst->home_dir); diff --git a/src/lib-sieve/storage/ldap/sieve-ldap-storage.c b/src/lib-sieve/storage/ldap/sieve-ldap-storage.c index ec08831d8..9f27b4d7e 100644 --- a/src/lib-sieve/storage/ldap/sieve-ldap-storage.c +++ b/src/lib-sieve/storage/ldap/sieve-ldap-storage.c @@ -47,7 +47,7 @@ sieve_ldap_storage_init(struct sieve_storage *storage, struct sieve_ldap_storage *lstorage = container_of(storage, struct sieve_ldap_storage, storage); struct sieve_instance *svinst = storage->svinst; - const char *value, *username = NULL; + const char *value; if (options != NULL) { while (*options != NULL) { @@ -55,7 +55,7 @@ sieve_ldap_storage_init(struct sieve_storage *storage, if (str_begins_icase(option, "user=", &value) && *value != '\0') { - username = value; + /* Ignore */ } else { sieve_storage_set_critical( storage, "Invalid option '%s'", option); @@ -67,22 +67,18 @@ sieve_ldap_storage_init(struct sieve_storage *storage, } } - if (username == NULL) - username = svinst->username; - e_debug(storage->event, "user=%s, config=%s", - username, storage->location); + svinst->username, storage->location); if (sieve_ldap_storage_read_settings(lstorage, storage->location) < 0) return -1; - lstorage->username = p_strdup(storage->pool, username); lstorage->config_file = p_strdup(storage->pool, storage->location); lstorage->conn = sieve_ldap_db_init(lstorage); storage->location = p_strconcat( storage->pool, SIEVE_LDAP_STORAGE_DRIVER_NAME, ":", - storage->location, ";user=", username, NULL); + storage->location, ";user=", svinst->username, NULL); return 0; } diff --git a/src/lib-sieve/storage/ldap/sieve-ldap-storage.h b/src/lib-sieve/storage/ldap/sieve-ldap-storage.h index 0420f9266..2341900ee 100644 --- a/src/lib-sieve/storage/ldap/sieve-ldap-storage.h +++ b/src/lib-sieve/storage/ldap/sieve-ldap-storage.h @@ -66,7 +66,6 @@ struct sieve_ldap_storage { time_t set_mtime; const char *config_file; - const char *username; // FIXME: needed? struct ldap_connection *conn; }; -- GitLab