changeset 21957:23ea7cc3b559

auth: Filter passdbs on credentials lookup start Consistency with how plain verify works.
author Aki Tuomi <aki.tuomi@dovecot.fi>
date Tue, 11 Apr 2017 15:50:14 +0300
parents fcaed9f9bb3f
children 61665dc536ad
files src/auth/auth-request.c
diffstat 1 files changed, 12 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/auth/auth-request.c	Tue Apr 11 15:47:33 2017 +0300
+++ b/src/auth/auth-request.c	Tue Apr 11 15:50:14 2017 +0300
@@ -1176,6 +1176,18 @@
 		return;
 	}
 	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, NULL, 0, request);
+		return;
+	}
 
 	request->private_callback.lookup_credentials = callback;