]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imap-urlauth: clients_deinit(): Fix use after free
authorMarco Bettini <marco.bettini@open-xchange.com>
Thu, 6 Jul 2023 07:12:23 +0000 (07:12 +0000)
committerMarco Bettini <marco.bettini@open-xchange.com>
Thu, 6 Jul 2023 09:25:30 +0000 (09:25 +0000)
Found by coverity.

src/imap-urlauth/imap-urlauth-client.c

index 6d33122aea69e78449797df5a9920145f12e03ba..30fe87a13fc3fe1ea6756cd176bfc6d0cfcf2b88 100644 (file)
@@ -189,10 +189,11 @@ void clients_init(void)
 
 void clients_deinit(void)
 {
-       struct connection *conn;
+       struct connection *conn, *next;
+
+       for (conn = imap_urlauth_clist->connections; conn != NULL; conn = next) {
+               next = conn->next; /* client_destroy() frees client & conn */
 
-       for (conn = imap_urlauth_clist->connections;
-            conn != NULL; conn = conn->next) {
                struct client *client = container_of(conn, struct client, conn);
 
                client_destroy(client, MASTER_SERVICE_SHUTTING_DOWN_MSG);