From de8db9c3a87d72b2ffae85471688d62e7a2b73d4 Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan.bosch@open-xchange.com> Date: Fri, 11 Oct 2024 22:54:13 +0200 Subject: [PATCH] lib-sieve: sieve-extensions - Use int for sieve_extension_replace() status result --- src/lib-sieve/sieve-extensions.c | 12 ++++-------- src/lib-sieve/sieve-extensions.h | 6 +++--- src/plugins/imapsieve/imap-sieve.c | 11 +++++++---- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/lib-sieve/sieve-extensions.c b/src/lib-sieve/sieve-extensions.c index 7aee135a8..fbe45cf57 100644 --- a/src/lib-sieve/sieve-extensions.c +++ b/src/lib-sieve/sieve-extensions.c @@ -485,9 +485,9 @@ int sieve_extension_reload(const struct sieve_extension *ext) return _sieve_extension_load(*mod_ext); } -const struct sieve_extension * -sieve_extension_replace(struct sieve_instance *svinst, - const struct sieve_extension_def *extdef, bool load) +int sieve_extension_replace(struct sieve_instance *svinst, + const struct sieve_extension_def *extdef, bool load, + const struct sieve_extension **ext_r) { struct sieve_extension *ext; @@ -495,11 +495,7 @@ sieve_extension_replace(struct sieve_instance *svinst, if (ext != NULL) sieve_extension_unregister(ext); - const struct sieve_extension *ext_new; - - if (sieve_extension_register(svinst, extdef, load, &ext_new) < 0) - return NULL; - return ext_new; + return sieve_extension_register(svinst, extdef, load, ext_r); } void sieve_extension_override(struct sieve_instance *svinst, const char *name, diff --git a/src/lib-sieve/sieve-extensions.h b/src/lib-sieve/sieve-extensions.h index c63d3f87e..21cdb473b 100644 --- a/src/lib-sieve/sieve-extensions.h +++ b/src/lib-sieve/sieve-extensions.h @@ -137,9 +137,9 @@ int sieve_extension_reload(const struct sieve_extension *ext); void sieve_extension_unregister(const struct sieve_extension *ext); -const struct sieve_extension * -sieve_extension_replace(struct sieve_instance *svinst, - const struct sieve_extension_def *extdef, bool load); +int sieve_extension_replace(struct sieve_instance *svinst, + const struct sieve_extension_def *extdef, bool load, + const struct sieve_extension **ext_r); void sieve_extension_override(struct sieve_instance *svinst, const char *name, const struct sieve_extension *ext); diff --git a/src/plugins/imapsieve/imap-sieve.c b/src/plugins/imapsieve/imap-sieve.c index 54631d701..8bb20c33c 100644 --- a/src/plugins/imapsieve/imap-sieve.c +++ b/src/plugins/imapsieve/imap-sieve.c @@ -92,10 +92,13 @@ struct imap_sieve *imap_sieve_init(struct client *client) debug, &isieve->svinst) < 0) return isieve; - isieve->ext_imapsieve = sieve_extension_replace( - isieve->svinst, &imapsieve_extension, TRUE); - isieve->ext_vnd_imapsieve = sieve_extension_replace( - isieve->svinst, &vnd_imapsieve_extension, TRUE); + if (sieve_extension_replace(isieve->svinst, &imapsieve_extension, + TRUE, &isieve->ext_imapsieve) < 0 || + sieve_extension_replace(isieve->svinst, &vnd_imapsieve_extension, + TRUE, &isieve->ext_vnd_imapsieve) < 0) { + sieve_deinit(&isieve->svinst); + return isieve; + } isieve->master_ehandler = sieve_master_ehandler_create(isieve->svinst, 0); -- GitLab