]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: Apply skips to first passdb
authorAki Tuomi <aki.tuomi@dovecot.fi>
Mon, 6 Mar 2017 11:16:12 +0000 (13:16 +0200)
committerAki Tuomi <aki.tuomi@dovecot.fi>
Mon, 6 Mar 2017 11:24:14 +0000 (13:24 +0200)
This is required to apply filters to first
passdb, so that mechanism filters can be
applied.

src/auth/auth-request.c

index 3eb035262e743b967875d4d2540ff6f8a11a33c8..af211e0f73efb7237e545d8c24f0972f4b61f9e9 100644 (file)
@@ -1002,7 +1002,21 @@ void auth_request_verify_plain_continue(struct auth_request *request,
                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;