From 668ccbee0012a40516b967bebe66c73468d151e0 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Fri, 20 Dec 2024 10:36:27 +0200 Subject: [PATCH] lib-storage: Fix memory leaks when storage create() fails --- src/lib-storage/mail-storage.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/lib-storage/mail-storage.c b/src/lib-storage/mail-storage.c index 7149217872..e5d47d4086 100644 --- a/src/lib-storage/mail-storage.c +++ b/src/lib-storage/mail-storage.c @@ -512,6 +512,7 @@ mail_storage_create_real(struct mail_namespace *ns, struct event *set_event, if (storage->v.create != NULL && storage->v.create(storage, ns, error_r) < 0) { *error_r = t_strdup_printf("%s: %s", storage->name, *error_r); + storage->v.destroy(storage); settings_free(storage->set); event_unref(&storage->event); pool_unref(&storage->pool); @@ -548,6 +549,9 @@ mail_storage_create_real(struct mail_namespace *ns, struct event *set_event, *error_r = t_strdup_printf("fs_init(posix) failed: %s", error); event_unref(&event); storage->v.destroy(storage); + settings_free(storage->set); + event_unref(&storage->event); + pool_unref(&storage->pool); return -1; } event_unref(&event); -- 2.47.3