From: Timo Sirainen Date: Fri, 19 Mar 2010 19:34:03 +0000 (+0200) Subject: auth: Fixed master user logins. X-Git-Tag: 2.0.beta4~8 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0d97e6efa567b3c853da8bc6894d509731597ee6;p=thirdparty%2Fdovecot%2Fcore.git auth: Fixed master user logins. --HG-- branch : HEAD --- diff --git a/src/auth/auth-request.c b/src/auth/auth-request.c index 9208e7a922..98591c454f 100644 --- a/src/auth/auth-request.c +++ b/src/auth/auth-request.c @@ -71,7 +71,8 @@ void auth_request_init(struct auth_request *request) auth = auth_request_get_auth(request); request->set = auth->set; - request->passdb = auth->passdbs; + request->passdb = auth->masterdbs != NULL ? + auth->masterdbs : auth->passdbs; request->userdb = auth->userdbs; } diff --git a/src/auth/auth.c b/src/auth/auth.c index 2a71dd308d..e8175cc458 100644 --- a/src/auth/auth.c +++ b/src/auth/auth.c @@ -17,14 +17,15 @@ struct auth_userdb_settings userdb_dummy_set = { static ARRAY_DEFINE(auths, struct auth *); static void -auth_passdb_preinit(struct auth *auth, const struct auth_passdb_settings *set) +auth_passdb_preinit(struct auth *auth, const struct auth_passdb_settings *set, + struct auth_passdb **passdbs) { struct auth_passdb *auth_passdb, **dest; auth_passdb = p_new(auth->pool, struct auth_passdb, 1); auth_passdb->set = set; - for (dest = &auth->passdbs; *dest != NULL; dest = &(*dest)->next) ; + for (dest = passdbs; *dest != NULL; dest = &(*dest)->next) ; *dest = auth_passdb; auth_passdb->passdb = @@ -73,7 +74,7 @@ auth_preinit(const struct auth_settings *set, const char *service, pool_t pool, if (passdbs[i]->master) continue; - auth_passdb_preinit(auth, passdbs[i]); + auth_passdb_preinit(auth, passdbs[i], &auth->passdbs); passdb_count++; last_passdb = i; } @@ -90,7 +91,7 @@ auth_preinit(const struct auth_settings *set, const char *service, pool_t pool, i_fatal("Master passdb can't have pass=yes " "if there are no passdbs"); } - auth_passdb_preinit(auth, passdbs[i]); + auth_passdb_preinit(auth, passdbs[i], &auth->masterdbs); } if (array_is_created(&set->userdbs)) {