From 5684baca3ec3ee1b27b48667e039d23ed03b5dcd Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan.bosch@open-xchange.com>
Date: Sat, 12 Oct 2024 03:18:34 +0200
Subject: [PATCH] lib-sieve: plugins: environment: Use int for
 sieve_ext_environment_require_extension() status result

---
 .../plugins/environment/sieve-ext-environment.h     | 13 +++++--------
 .../vnd.dovecot/environment/ext-vnd-environment.c   |  6 +++++-
 src/plugins/imapsieve/ext-imapsieve.c               |  9 +++++++--
 3 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/src/lib-sieve/plugins/environment/sieve-ext-environment.h b/src/lib-sieve/plugins/environment/sieve-ext-environment.h
index 765780a30..e4a6ca646 100644
--- a/src/lib-sieve/plugins/environment/sieve-ext-environment.h
+++ b/src/lib-sieve/plugins/environment/sieve-ext-environment.h
@@ -19,15 +19,12 @@ sieve_ext_environment_get_extension(struct sieve_instance *svinst,
 					ext_r);
 }
 
-static inline const struct sieve_extension *
-sieve_ext_environment_require_extension(struct sieve_instance *svinst)
+static inline int
+sieve_ext_environment_require_extension(struct sieve_instance *svinst,
+					const struct sieve_extension **ext_r)
 {
-	const struct sieve_extension *ext;
-
-	if (sieve_extension_require(svinst, &environment_extension, TRUE,
-				    &ext) < 0)
-		return NULL;
-	return ext;
+	return sieve_extension_require(svinst, &environment_extension, TRUE,
+				       ext_r);
 }
 
 bool sieve_ext_environment_is_active(const struct sieve_extension *env_ext,
diff --git a/src/lib-sieve/plugins/vnd.dovecot/environment/ext-vnd-environment.c b/src/lib-sieve/plugins/vnd.dovecot/environment/ext-vnd-environment.c
index e974a4f03..76794c196 100644
--- a/src/lib-sieve/plugins/vnd.dovecot/environment/ext-vnd-environment.c
+++ b/src/lib-sieve/plugins/vnd.dovecot/environment/ext-vnd-environment.c
@@ -59,6 +59,7 @@ const struct sieve_extension_def vnd_environment_extension = {
 static bool
 ext_vnd_environment_load(const struct sieve_extension *ext, void **context)
 {
+	const struct sieve_extension *ext_env;
 	struct ext_vnd_environment_context *extctx;
 
 	if (*context != NULL) {
@@ -66,8 +67,11 @@ ext_vnd_environment_load(const struct sieve_extension *ext, void **context)
 		*context = NULL;
 	}
 
+	if (sieve_ext_environment_require_extension(ext->svinst, &ext_env) < 0)
+		return FALSE;
+
 	extctx = i_new(struct ext_vnd_environment_context, 1);
-	extctx->env_ext = sieve_ext_environment_require_extension(ext->svinst);
+	extctx->env_ext = ext_env;
 	extctx->var_ext = sieve_ext_variables_get_extension(ext->svinst);
 
 	*context = extctx;
diff --git a/src/plugins/imapsieve/ext-imapsieve.c b/src/plugins/imapsieve/ext-imapsieve.c
index 077e7b774..92a3fb7f9 100644
--- a/src/plugins/imapsieve/ext-imapsieve.c
+++ b/src/plugins/imapsieve/ext-imapsieve.c
@@ -74,6 +74,7 @@ const struct sieve_extension_def vnd_imapsieve_extension = {
 static bool
 ext_imapsieve_load(const struct sieve_extension *ext, void **context)
 {
+	const struct sieve_extension *ext_environment;
 	struct ext_imapsieve_context *extctx;
 
 	if (context != NULL) {
@@ -81,9 +82,13 @@ ext_imapsieve_load(const struct sieve_extension *ext, void **context)
 		*context = NULL;
 	}
 
+	if (sieve_ext_environment_require_extension(ext->svinst,
+						    &ext_environment) < 0)
+		return FALSE;
+
 	extctx = i_new(struct ext_imapsieve_context, 1);
-	extctx->ext_environment =
-		sieve_ext_environment_require_extension(ext->svinst);
+	extctx->ext_environment = ext_environment;
+
 	*context = extctx;
 	return TRUE;
 }
-- 
GitLab