From 22446bdd32448988296b209ea62a19c8d47bd9c1 Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan.bosch@open-xchange.com> Date: Tue, 1 Oct 2024 03:09:10 +0200 Subject: [PATCH] lib-sieve: sieve-storage - Properly set error code and message for sieve_storage_setup_bin_path() --- src/lib-sieve/sieve-script.c | 2 +- src/lib-sieve/sieve-storage.c | 15 +++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/lib-sieve/sieve-script.c b/src/lib-sieve/sieve-script.c index 22c21b5fb..299dd23a5 100644 --- a/src/lib-sieve/sieve-script.c +++ b/src/lib-sieve/sieve-script.c @@ -573,7 +573,7 @@ int sieve_script_binary_save_default(struct sieve_script *script ATTR_UNUSED, str_begins_with(path, storage->bin_path) && sieve_storage_setup_bin_path( script->storage, mkdir_get_executable_mode(save_mode)) < 0) { - *error_code_r = SIEVE_ERROR_TEMP_FAILURE; + *error_code_r = script->storage->error_code; return -1; } diff --git a/src/lib-sieve/sieve-storage.c b/src/lib-sieve/sieve-storage.c index 706533b94..dee0b127c 100644 --- a/src/lib-sieve/sieve-storage.c +++ b/src/lib-sieve/sieve-storage.c @@ -624,19 +624,22 @@ int sieve_storage_setup_bin_path(struct sieve_storage *storage, mode_t mode) const char *bin_path = storage->bin_path; struct stat st; - if (bin_path == NULL) + if (bin_path == NULL) { + sieve_storage_set_critical( + storage, "script_bin_path not configured for storage"); return -1; + } if (stat(bin_path, &st) == 0) return 0; if (errno == EACCES) { - e_error(storage->event, + sieve_storage_set_critical(storage, "Failed to setup directory for binaries: " "%s", eacces_error_get("stat", bin_path)); return -1; } else if (errno != ENOENT) { - e_error(storage->event, + sieve_storage_set_critical(storage, "Failed to setup directory for binaries: " "stat(%s) failed: %m", bin_path); @@ -653,16 +656,16 @@ int sieve_storage_setup_bin_path(struct sieve_storage *storage, mode_t mode) case EEXIST: return 0; case ENOENT: - e_error(storage->event, + sieve_storage_set_critical(storage, "Directory for binaries was deleted while it was being created"); break; case EACCES: - e_error(storage->event, + sieve_storage_set_critical(storage, "%s", eacces_error_get_creating("mkdir_parents_chgrp", bin_path)); break; default: - e_error(storage->event, + sieve_storage_set_critical(storage, "mkdir_parents_chgrp(%s) failed: %m", bin_path); break; } -- GitLab