From ca138776a27ca07cc1ea2b9e9b8505034412fceb Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan.bosch@open-xchange.com> Date: Tue, 1 Oct 2024 13:52:56 +0200 Subject: [PATCH] lib-sieve: sieve-storage - Return error code from sieve_storage_alloc() --- src/lib-sieve/sieve-storage-private.h | 3 ++- src/lib-sieve/sieve-storage.c | 9 ++++++--- src/lib-sieve/storage/data/sieve-data-script.c | 4 ++-- src/lib-sieve/storage/file/sieve-file-storage.c | 10 ++++++---- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/lib-sieve/sieve-storage-private.h b/src/lib-sieve/sieve-storage-private.h index b84ba3481..8b609f51d 100644 --- a/src/lib-sieve/sieve-storage-private.h +++ b/src/lib-sieve/sieve-storage-private.h @@ -121,7 +121,8 @@ struct sieve_storage { int sieve_storage_alloc(struct sieve_instance *svinst, struct event *event, const struct sieve_storage *storage_class, const char *data, enum sieve_storage_flags flags, - bool main, struct sieve_storage **storage_r); + bool main, struct sieve_storage **storage_r, + enum sieve_error *error_code_r); int sieve_storage_setup_bin_path(struct sieve_storage *storage, mode_t mode); diff --git a/src/lib-sieve/sieve-storage.c b/src/lib-sieve/sieve-storage.c index 3558ae51e..0437f47d4 100644 --- a/src/lib-sieve/sieve-storage.c +++ b/src/lib-sieve/sieve-storage.c @@ -320,12 +320,14 @@ sieve_storage_alloc_from_class(struct sieve_instance *svinst, int sieve_storage_alloc(struct sieve_instance *svinst, struct event *event, const struct sieve_storage *storage_class, const char *data, enum sieve_storage_flags flags, - bool main, struct sieve_storage **storage_r) + bool main, struct sieve_storage **storage_r, + enum sieve_error *error_code_r) { struct sieve_storage *storage; int ret; *storage_r = NULL; + sieve_error_args_init(&error_code_r, NULL); if (event != NULL) event_ref(event); @@ -381,9 +383,10 @@ sieve_storage_init_real(struct sieve_instance *svinst, struct event *event, driver_event = sieve_storage_create_driver_event( event, storage_class->driver_name); ret = sieve_storage_alloc(svinst, driver_event, storage_class, - data, flags, main, &storage); + data, flags, main, &storage, error_code_r); event_unref(&driver_event); - i_assert(ret == 0); + if (ret < 0) + return -1; i_assert(storage != NULL); i_assert(storage_class->v.init != NULL); diff --git a/src/lib-sieve/storage/data/sieve-data-script.c b/src/lib-sieve/storage/data/sieve-data-script.c index 1162b38f1..45065a2d2 100644 --- a/src/lib-sieve/storage/data/sieve-data-script.c +++ b/src/lib-sieve/storage/data/sieve-data-script.c @@ -39,8 +39,8 @@ sieve_data_script_create_from_input(struct sieve_instance *svinst, int ret; ret = sieve_storage_alloc(svinst, NULL, &sieve_data_storage, - "", 0, FALSE, &storage); - i_assert(ret == 0); + "", 0, FALSE, &storage, NULL); + i_assert(ret >= 0); dscript = sieve_data_script_alloc(); sieve_script_init(&dscript->script, storage, &sieve_data_script, diff --git a/src/lib-sieve/storage/file/sieve-file-storage.c b/src/lib-sieve/storage/file/sieve-file-storage.c index bb04272a4..95a3d4377 100644 --- a/src/lib-sieve/storage/file/sieve-file-storage.c +++ b/src/lib-sieve/storage/file/sieve-file-storage.c @@ -695,8 +695,9 @@ int sieve_file_storage_init_default(struct sieve_instance *svinst, int ret; ret = sieve_storage_alloc(svinst, NULL, &sieve_file_storage, - "", flags, TRUE, &storage); - i_assert(ret == 0); + "", flags, TRUE, &storage, error_code_r); + if (ret < 0) + return -1; fstorage = container_of(storage, struct sieve_file_storage, storage); T_BEGIN { @@ -727,8 +728,9 @@ int sieve_file_storage_init_from_path(struct sieve_instance *svinst, sieve_error_args_init(&error_code_r, NULL); ret = sieve_storage_alloc(svinst, NULL, &sieve_file_storage, - "", flags, FALSE, &storage); - i_assert(ret == 0); + "", flags, FALSE, &storage, error_code_r); + if (ret < 0) + return -1; fstorage = container_of(storage, struct sieve_file_storage, storage); T_BEGIN { -- GitLab