From 8b889a60191002c43a65240ffeb55ddcea60a78b Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan.bosch@open-xchange.com> Date: Sat, 31 Aug 2024 22:55:46 +0200 Subject: [PATCH] lib-sieve: sieve-binary - Use int for sieve_binary_open() status result --- src/lib-sieve/sieve-binary-file.c | 17 ++++++++++------- src/lib-sieve/sieve-binary.h | 6 +++--- src/lib-sieve/sieve.c | 6 +++++- src/lib-sieve/storage/dict/sieve-dict-script.c | 7 +++++-- src/lib-sieve/storage/file/sieve-file-script.c | 7 +++++-- src/lib-sieve/storage/ldap/sieve-ldap-script.c | 7 +++++-- 6 files changed, 33 insertions(+), 17 deletions(-) diff --git a/src/lib-sieve/sieve-binary-file.c b/src/lib-sieve/sieve-binary-file.c index 9936965bd..a28f36a6f 100644 --- a/src/lib-sieve/sieve-binary-file.c +++ b/src/lib-sieve/sieve-binary-file.c @@ -909,9 +909,9 @@ _sieve_binary_open(struct sieve_binary *sbin, enum sieve_error *error_code_r) return TRUE; } -struct sieve_binary * -sieve_binary_open(struct sieve_instance *svinst, const char *path, - struct sieve_script *script, enum sieve_error *error_code_r) +int sieve_binary_open(struct sieve_instance *svinst, const char *path, + struct sieve_script *script, struct sieve_binary **sbin_r, + enum sieve_error *error_code_r) { struct sieve_binary_extension_reg *const *regs; unsigned int ext_count, i; @@ -919,6 +919,7 @@ sieve_binary_open(struct sieve_instance *svinst, const char *path, struct sieve_binary_file *file; i_assert(script == NULL || sieve_script_svinst(script) == svinst); + *sbin_r = NULL; /* Create binary object */ sbin = sieve_binary_create(svinst, script); @@ -926,7 +927,7 @@ sieve_binary_open(struct sieve_instance *svinst, const char *path, if (sieve_binary_file_open(sbin, path, &file, error_code_r) < 0) { sieve_binary_unref(&sbin); - return NULL; + return -1; } sbin->file = file; @@ -937,7 +938,7 @@ sieve_binary_open(struct sieve_instance *svinst, const char *path, if (!_sieve_binary_open(sbin, error_code_r)) { sieve_binary_unref(&sbin); - return NULL; + return -1; } sieve_binary_activate(sbin); @@ -954,10 +955,12 @@ sieve_binary_open(struct sieve_instance *svinst, const char *path, if (error_code_r != NULL) *error_code_r = SIEVE_ERROR_NOT_VALID; sieve_binary_unref(&sbin); - return NULL; + return -1; } } - return sbin; + + *sbin_r = sbin; + return 0; } int sieve_binary_check_executable(struct sieve_binary *sbin, diff --git a/src/lib-sieve/sieve-binary.h b/src/lib-sieve/sieve-binary.h index adff6c5c7..e9397b58e 100644 --- a/src/lib-sieve/sieve-binary.h +++ b/src/lib-sieve/sieve-binary.h @@ -79,9 +79,9 @@ int sieve_binary_save(struct sieve_binary *sbin, const char *path, bool update, * Loading the binary */ -struct sieve_binary * -sieve_binary_open(struct sieve_instance *svinst, const char *path, - struct sieve_script *script, enum sieve_error *error_code_r); +int sieve_binary_open(struct sieve_instance *svinst, const char *path, + struct sieve_script *script, struct sieve_binary **sbin_r, + enum sieve_error *error_code_r); bool sieve_binary_up_to_date(struct sieve_binary *sbin, enum sieve_compile_flags cpflags); diff --git a/src/lib-sieve/sieve.c b/src/lib-sieve/sieve.c index 6d61a0eef..1e8cd09cb 100644 --- a/src/lib-sieve/sieve.c +++ b/src/lib-sieve/sieve.c @@ -375,7 +375,11 @@ struct sieve_binary * sieve_load(struct sieve_instance *svinst, const char *bin_path, enum sieve_error *error_code_r) { - return sieve_binary_open(svinst, bin_path, NULL, error_code_r); + struct sieve_binary *sbin; + + if (sieve_binary_open(svinst, bin_path, NULL, &sbin, error_code_r) < 0) + return NULL; + return sbin; } static struct sieve_binary * diff --git a/src/lib-sieve/storage/dict/sieve-dict-script.c b/src/lib-sieve/storage/dict/sieve-dict-script.c index e60fc7833..9ea88710c 100644 --- a/src/lib-sieve/storage/dict/sieve-dict-script.c +++ b/src/lib-sieve/storage/dict/sieve-dict-script.c @@ -230,12 +230,15 @@ sieve_dict_script_binary_load(struct sieve_script *script, { struct sieve_dict_script *dscript = container_of(script, struct sieve_dict_script, script); + struct sieve_binary *sbin; if (sieve_dict_script_get_binpath(dscript) == NULL) return NULL; - return sieve_binary_open(script->storage->svinst, dscript->binpath, - script, error_code_r); + if (sieve_binary_open(script->storage->svinst, dscript->binpath, + script, &sbin, error_code_r) < 0) + return NULL; + return sbin; } static int diff --git a/src/lib-sieve/storage/file/sieve-file-script.c b/src/lib-sieve/storage/file/sieve-file-script.c index c76c84844..910cb7354 100644 --- a/src/lib-sieve/storage/file/sieve-file-script.c +++ b/src/lib-sieve/storage/file/sieve-file-script.c @@ -538,9 +538,12 @@ sieve_file_script_binary_load(struct sieve_script *script, struct sieve_file_script *fscript = container_of(script, struct sieve_file_script, script); struct sieve_instance *svinst = script->storage->svinst; + struct sieve_binary *sbin; - return sieve_binary_open(svinst, fscript->binpath, script, - error_code_r); + if (sieve_binary_open(svinst, fscript->binpath, script, + &sbin, error_code_r) < 0) + return NULL; + return sbin; } static int diff --git a/src/lib-sieve/storage/ldap/sieve-ldap-script.c b/src/lib-sieve/storage/ldap/sieve-ldap-script.c index d8020cd18..027e0f21c 100644 --- a/src/lib-sieve/storage/ldap/sieve-ldap-script.c +++ b/src/lib-sieve/storage/ldap/sieve-ldap-script.c @@ -253,12 +253,15 @@ sieve_ldap_script_binary_load(struct sieve_script *script, struct sieve_storage *storage = script->storage; struct sieve_ldap_script *lscript = container_of(script, struct sieve_ldap_script, script); + struct sieve_binary *sbin; if (sieve_ldap_script_get_binpath(lscript) == NULL) return NULL; - return sieve_binary_open(storage->svinst, lscript->binpath, script, - error_code_r); + if (sieve_binary_open(storage->svinst, lscript->binpath, script, + &sbin, error_code_r) < 0) + return NULL; + return sbin; } static int -- GitLab