diff --git a/src/lib-sieve/sieve-extensions.c b/src/lib-sieve/sieve-extensions.c index 4127d4c2401cd6e1653059f3cd882c4b306e190f..a6400c438b25a5640159b3ab3823a5487cbb3c0f 100644 --- a/src/lib-sieve/sieve-extensions.c +++ b/src/lib-sieve/sieve-extensions.c @@ -253,30 +253,34 @@ int sieve_extensions_init(struct sieve_instance *svinst) return 0; } -void sieve_extensions_load(struct sieve_instance *svinst) +int sieve_extensions_load(struct sieve_instance *svinst) { const char *extensions; /* Apply sieve_extensions configuration */ if ((extensions = sieve_setting_get( svinst, "sieve_extensions")) != NULL) { - (void)sieve_extensions_set_string(svinst, extensions, - FALSE, FALSE); + if (sieve_extensions_set_string(svinst, extensions, + FALSE, FALSE) < 0) + return -1; } /* Apply sieve_global_extensions configuration */ if ((extensions = sieve_setting_get( svinst, "sieve_global_extensions")) != NULL) { - (void)sieve_extensions_set_string(svinst, extensions, - TRUE, FALSE); + if (sieve_extensions_set_string(svinst, extensions, + TRUE, FALSE) < 0) + return -1; } /* Apply sieve_implicit_extensions configuration */ if ((extensions = sieve_setting_get( svinst, "sieve_implicit_extensions")) != NULL) { - (void)sieve_extensions_set_string(svinst, extensions, - FALSE, TRUE); + if (sieve_extensions_set_string(svinst, extensions, + FALSE, TRUE) < 0) + return -1; } + return 0; } void sieve_extensions_deinit(struct sieve_instance *svinst) diff --git a/src/lib-sieve/sieve-extensions.h b/src/lib-sieve/sieve-extensions.h index ae819e78c6bbc57199c9d1f2c7cce7f8022789e7..5bbfdbf67f6fad2a77f897d2bdccd29f6e9f9d33 100644 --- a/src/lib-sieve/sieve-extensions.h +++ b/src/lib-sieve/sieve-extensions.h @@ -112,7 +112,7 @@ struct sieve_extension { */ int sieve_extensions_init(struct sieve_instance *svinst); -void sieve_extensions_load(struct sieve_instance *svinst); +int sieve_extensions_load(struct sieve_instance *svinst); void sieve_extensions_deinit(struct sieve_instance *svinst); /* diff --git a/src/lib-sieve/sieve.c b/src/lib-sieve/sieve.c index 462f47d32648bb70dce83c5149fe7ff089862c24..757e82f7424747e7d135996b8839128153c8faac 100644 --- a/src/lib-sieve/sieve.c +++ b/src/lib-sieve/sieve.c @@ -138,7 +138,10 @@ int sieve_init(const struct sieve_environment *env, sieve_plugins_load(svinst, NULL, NULL); /* Load extensions */ - sieve_extensions_load(svinst); + if (sieve_extensions_load(svinst) < 0) { + sieve_deinit(&svinst); + return -1; + } *svinst_r = svinst; return 0;