]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-index: Fix event leak if purging dovecot.index.cache fails
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Sun, 5 Feb 2023 18:46:34 +0000 (20:46 +0200)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Thu, 15 Jun 2023 17:21:25 +0000 (17:21 +0000)
src/lib-index/mail-cache-purge.c

index bc86bf18397bec14837928267c0751189e27b9b7..2cb11316e76caef92321902beb2db8c42ea1277a 100644 (file)
@@ -392,17 +392,21 @@ mail_cache_purge_write(struct mail_cache *cache,
 
        if (mail_cache_copy(cache, trans, event, fd, reason,
                            &file_seq, &file_size, &max_uid,
-                           &ext_first_seq, &ext_offsets) < 0)
+                           &ext_first_seq, &ext_offsets) < 0) {
+               event_unref(&event);
                return -1;
+       }
 
        if (fstat(fd, &st) < 0) {
                mail_cache_set_syscall_error(cache, "fstat()");
                array_free(&ext_offsets);
+               event_unref(&event);
                return -1;
        }
        if (rename(temp_path, cache->filepath) < 0) {
                mail_cache_set_syscall_error(cache, "rename()");
                array_free(&ext_offsets);
+               event_unref(&event);
                return -1;
        }