]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
indexer: Free user after anvil disconnect
authorAki Tuomi <aki.tuomi@open-xchange.com>
Thu, 17 Feb 2022 08:06:40 +0000 (10:06 +0200)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Mon, 21 Feb 2022 08:52:42 +0000 (08:52 +0000)
Fixes invalid use after free. Broken by f9627ea62b5cb471d9adde0cc188ee8dea93c172

src/indexer/master-connection.c

index f4b1cf5e0829034bb21286582a1e42633bcd991c..eeb7a04e2d9d85fb8dd24d6d8faf29009afa62b1 100644 (file)
@@ -289,13 +289,14 @@ master_connection_cmd_index(struct master_connection *conn,
        /* refresh proctitle before a potentially long-running
           user unref */
        indexer_worker_refresh_proctitle(user->username, "(deinit)", 0, 0);
-       mail_user_deinit(&user);
-       mail_storage_service_user_unref(&service_user);
 
        if (anvil_sent) {
                master_service_anvil_disconnect(master_service, &anvil_session,
                                                anvil_conn_guid);
        }
+
+       mail_user_deinit(&user);
+       mail_storage_service_user_unref(&service_user);
        indexer_worker_refresh_proctitle(NULL, NULL, 0, 0);
        return ret;
 }