changeset 21715:465fc64557c2

auth: Apply skips to first passdb This is required to apply filters to first passdb, so that mechanism filters can be applied.
author Aki Tuomi <aki.tuomi@dovecot.fi>
date Mon, 06 Mar 2017 13:16:12 +0200
parents 51f236a068a9
children 8afc52576667
files src/auth/auth-request.c
diffstat 1 files changed, 15 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/auth/auth-request.c	Fri Mar 03 08:31:50 2017 +0200
+++ b/src/auth/auth-request.c	Mon Mar 06 13:16:12 2017 +0200
@@ -987,7 +987,21 @@
 		return;
 	}
 
-	 passdb = request->passdb;
+	passdb = request->passdb;
+
+	while (passdb != NULL && auth_request_want_skip_passdb(request, passdb))
+		passdb = passdb->next;
+
+	request->passdb = passdb;
+
+	if (passdb == NULL) {
+		auth_request_log_error(request, AUTH_SUBSYS_DB,
+			"All password databases were skipped for mechanism '%s'",
+				request->mech == NULL ? "<empty>"
+						      : request->mech->mech_name);
+		callback(PASSDB_RESULT_INTERNAL_FAILURE, request);
+		return;
+	}
 
 	request->private_callback.verify_plain = callback;