From b35daf5ed8f1fa6baa2fee56276e3da75487b6a1 Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan.bosch@open-xchange.com> Date: Mon, 19 Aug 2024 07:48:21 +0200 Subject: [PATCH] lib-sieve: sieve - Use int for sieve_init() status result --- src/lib-sieve-tool/sieve-tool.c | 5 ++--- src/lib-sieve/sieve.c | 13 ++++++++----- src/lib-sieve/sieve.h | 6 +++--- src/managesieve/managesieve-capabilities.c | 5 ++--- src/managesieve/managesieve-client.c | 5 ++--- src/plugins/doveadm-sieve/doveadm-sieve-cmd.c | 5 ++--- src/plugins/doveadm-sieve/doveadm-sieve-sync.c | 5 ++--- src/plugins/imap-filter-sieve/imap-filter-sieve.c | 5 ++--- src/plugins/imapsieve/imap-sieve.c | 5 ++--- src/plugins/lda-sieve/lda-sieve-plugin.c | 4 ++-- 10 files changed, 27 insertions(+), 31 deletions(-) diff --git a/src/lib-sieve-tool/sieve-tool.c b/src/lib-sieve-tool/sieve-tool.c index 296364fb3..3f3598d84 100644 --- a/src/lib-sieve-tool/sieve-tool.c +++ b/src/lib-sieve-tool/sieve-tool.c @@ -275,9 +275,8 @@ sieve_tool_init_finish(struct sieve_tool *tool, bool init_mailstore, svenv.delivery_phase = SIEVE_DELIVERY_PHASE_POST; /* Initialize Sieve Engine */ - tool->svinst = sieve_init(&svenv, &sieve_tool_callbacks, tool, - tool->debug); - if (tool->svinst == NULL) + if (sieve_init(&svenv, &sieve_tool_callbacks, tool, tool->debug, + &tool->svinst) < 0) i_fatal("Failed to initialize Sieve"); /* Load Sieve plugins */ diff --git a/src/lib-sieve/sieve.c b/src/lib-sieve/sieve.c index 4e2b4fd08..1ee5336bc 100644 --- a/src/lib-sieve/sieve.c +++ b/src/lib-sieve/sieve.c @@ -51,14 +51,16 @@ struct event_category event_category_sieve = { * Main Sieve library interface */ -struct sieve_instance * -sieve_init(const struct sieve_environment *env, - const struct sieve_callbacks *callbacks, void *context, bool debug) +int sieve_init(const struct sieve_environment *env, + const struct sieve_callbacks *callbacks, void *context, + bool debug, struct sieve_instance **svinst_r) { struct sieve_instance *svinst; const char *domain; pool_t pool; + *svinst_r = NULL; + /* Create Sieve engine instance */ pool = pool_alloconly_create("sieve", 8192); svinst = p_new(pool, struct sieve_instance, 1); @@ -117,7 +119,7 @@ sieve_init(const struct sieve_environment *env, /* Initialize extensions */ if (!sieve_extensions_init(svinst)) { sieve_deinit(&svinst); - return NULL; + return -1; } /* Initialize storage classes */ @@ -129,7 +131,8 @@ sieve_init(const struct sieve_environment *env, /* Configure extensions */ sieve_extensions_configure(svinst); - return svinst; + *svinst_r = svinst; + return 0; } void sieve_deinit(struct sieve_instance **_svinst) diff --git a/src/lib-sieve/sieve.h b/src/lib-sieve/sieve.h index 5f23f2304..2ee15a6ed 100644 --- a/src/lib-sieve/sieve.h +++ b/src/lib-sieve/sieve.h @@ -14,9 +14,9 @@ struct sieve_binary; /* Initialize the sieve engine. Must be called before any sieve functionality is used. */ -struct sieve_instance * -sieve_init(const struct sieve_environment *env, - const struct sieve_callbacks *callbacks, void *context, bool debug); +int sieve_init(const struct sieve_environment *env, + const struct sieve_callbacks *callbacks, void *context, + bool debug, struct sieve_instance **svinst_r); /* Free all memory allocated by the sieve engine. */ void sieve_deinit(struct sieve_instance **_svinst); diff --git a/src/managesieve/managesieve-capabilities.c b/src/managesieve/managesieve-capabilities.c index 34d9fadd7..ddac5a4d0 100644 --- a/src/managesieve/managesieve-capabilities.c +++ b/src/managesieve/managesieve-capabilities.c @@ -77,9 +77,8 @@ void managesieve_capabilities_dump(void) i_zero(&svenv); svenv.home_dir = "/tmp"; - svinst = sieve_init(&svenv, &sieve_callbacks, - (void *) global_plugin_settings, FALSE); - if (svinst == NULL) + if (sieve_init(&svenv, &sieve_callbacks, (void *)global_plugin_settings, + FALSE, &svinst) < 0) i_fatal("Failed to initialize Sieve"); /* Dump capabilities */ diff --git a/src/managesieve/managesieve-client.c b/src/managesieve/managesieve-client.c index 1ae8e1e6d..f6627d8ac 100644 --- a/src/managesieve/managesieve-client.c +++ b/src/managesieve/managesieve-client.c @@ -125,9 +125,8 @@ int client_create(int fd_in, int fd_out, const char *session_id, svenv.event_parent = event; svenv.flags = SIEVE_FLAG_HOME_RELATIVE; - svinst = sieve_init(&svenv, &managesieve_sieve_callbacks, - user, set->mail_debug); - if (svinst == NULL) { + if (sieve_init(&svenv, &managesieve_sieve_callbacks, user, + set->mail_debug, &svinst) < 0) { *error_r = "Failed to initialize Sieve interpreter"; return -1; } diff --git a/src/plugins/doveadm-sieve/doveadm-sieve-cmd.c b/src/plugins/doveadm-sieve/doveadm-sieve-cmd.c index a5cedb496..c851e5f28 100644 --- a/src/plugins/doveadm-sieve/doveadm-sieve-cmd.c +++ b/src/plugins/doveadm-sieve/doveadm-sieve-cmd.c @@ -112,9 +112,8 @@ doveadm_sieve_cmd_run(struct doveadm_mail_cmd_context *_ctx, svenv.base_dir = user->set->base_dir; svenv.flags = SIEVE_FLAG_HOME_RELATIVE; - ctx->svinst = sieve_init(&svenv, &sieve_callbacks, ctx, - user->set->mail_debug); - if (ctx->svinst == NULL) + if (sieve_init(&svenv, &sieve_callbacks, ctx, + user->set->mail_debug, &ctx->svinst) < 0) return -1; ctx->storage = sieve_storage_create_personal( diff --git a/src/plugins/doveadm-sieve/doveadm-sieve-sync.c b/src/plugins/doveadm-sieve/doveadm-sieve-sync.c index 05abee587..2606e3f27 100644 --- a/src/plugins/doveadm-sieve/doveadm-sieve-sync.c +++ b/src/plugins/doveadm-sieve/doveadm-sieve-sync.c @@ -93,9 +93,8 @@ mail_sieve_user_init(struct mail_user *user, struct sieve_storage **svstorage_r) svenv.base_dir = user->set->base_dir; svenv.flags = SIEVE_FLAG_HOME_RELATIVE; - suser->svinst = sieve_init(&svenv, &mail_sieve_callbacks, - user, user->set->mail_debug); - if (suser->svinst == NULL) + if (sieve_init(&svenv, &mail_sieve_callbacks, user, + user->set->mail_debug, &suser->svinst) < 0) return -1; suser->sieve_storage = diff --git a/src/plugins/imap-filter-sieve/imap-filter-sieve.c b/src/plugins/imap-filter-sieve/imap-filter-sieve.c index c275d90eb..95bd45fa2 100644 --- a/src/plugins/imap-filter-sieve/imap-filter-sieve.c +++ b/src/plugins/imap-filter-sieve/imap-filter-sieve.c @@ -96,9 +96,8 @@ imap_filter_sieve_get_svinst(struct imap_filter_sieve_context *sctx) svenv.location = SIEVE_ENV_LOCATION_MS; svenv.delivery_phase = SIEVE_DELIVERY_PHASE_POST; - ifsuser->svinst = sieve_init(&svenv, &imap_filter_sieve_callbacks, - ifsuser, debug); - if (ifsuser->svinst == NULL) + if (sieve_init(&svenv, &imap_filter_sieve_callbacks, ifsuser, debug, + &ifsuser->svinst) < 0) return NULL; ifsuser->master_ehandler = diff --git a/src/plugins/imapsieve/imap-sieve.c b/src/plugins/imapsieve/imap-sieve.c index 0aaf363c1..88f456b3f 100644 --- a/src/plugins/imapsieve/imap-sieve.c +++ b/src/plugins/imapsieve/imap-sieve.c @@ -88,9 +88,8 @@ struct imap_sieve *imap_sieve_init(struct client *client) isieve->home_dir = p_strdup(pool, svenv.home_dir); - isieve->svinst = sieve_init(&svenv, &mail_sieve_callbacks, isieve, - debug); - if (isieve->svinst == NULL) + if (sieve_init(&svenv, &mail_sieve_callbacks, isieve, + debug, &isieve->svinst) < 0) return isieve; isieve->ext_imapsieve = sieve_extension_replace( diff --git a/src/plugins/lda-sieve/lda-sieve-plugin.c b/src/plugins/lda-sieve/lda-sieve-plugin.c index 66bd0e859..cc5e3c088 100644 --- a/src/plugins/lda-sieve/lda-sieve-plugin.c +++ b/src/plugins/lda-sieve/lda-sieve-plugin.c @@ -1069,8 +1069,8 @@ lda_sieve_deliver_mail(struct mail_deliver_context *mdctx, svenv.location = SIEVE_ENV_LOCATION_MDA; svenv.delivery_phase = SIEVE_DELIVERY_PHASE_DURING; - srctx.svinst = sieve_init(&svenv, &lda_sieve_callbacks, mdctx, debug); - if (srctx.svinst == NULL) + if (sieve_init(&svenv, &lda_sieve_callbacks, mdctx, debug, + &srctx.svinst) < 0) return -1; /* Initialize master error handler */ -- GitLab