]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth-request: Call auth_request_passdb_lookup_end() for all return paths of auth_requ...
authorSergey Kitov <sergey.kitov@open-xchange.com>
Fri, 22 Mar 2019 13:59:53 +0000 (15:59 +0200)
committerTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 25 Mar 2019 12:15:59 +0000 (12:15 +0000)
Fixes: Panic: file auth-request.c: line 367 (auth_request_unref):
assertion failed: (array_count(&request->authdb_event) == 0)
The panic happens when auth request results in PASSDB_RESULT_USER_DISABLED.

src/auth/auth-request.c

index e81321b197c65536c7f30a96e67904588c03ca0f..6a819438bab0d2720af09965ff4f746e9fa92e3b 100644 (file)
@@ -981,6 +981,8 @@ auth_request_handle_passdb_callback(enum passdb_result *result,
                            strlen(request->passdb_password));
        }
 
+       auth_request_passdb_lookup_end(request, *result);
+
        if (request->passdb->set->deny &&
            *result != PASSDB_RESULT_USER_UNKNOWN) {
                /* deny passdb. we can get through this step only if the
@@ -1076,8 +1078,6 @@ auth_request_handle_passdb_callback(enum passdb_result *result,
                next_passdb = request->passdb->next;
        }
 
-       auth_request_passdb_lookup_end(request, *result);
-
        while (next_passdb != NULL &&
                auth_request_want_skip_passdb(request, next_passdb))
                next_passdb = next_passdb->next;