From 8ed2751ae19b01d5b1abb1838c451e30991b4fb9 Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Mon, 17 Mar 2025 18:39:05 +0100 Subject: [PATCH] Fix pre/post/ready/cleanup script execution if env:file is missing Don't try to source an optional env:file if it is missing. Otherwise execution of pre/post/ready/cleanup script will fail. Signed-off-by: Joachim Wiberg --- src/service.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/service.c b/src/service.c index d63312c8..781e9635 100644 --- a/src/service.c +++ b/src/service.c @@ -2147,8 +2147,9 @@ static void service_pre_script(svc_t *svc) redirect(svc); + /* Warning in service_start() after svc_checkenv() */ env_file = svc_getenv(svc); - if (env_file) + if (env_file && fexist(env_file)) snprintf(buf, sizeof(buf), ". %s; exec %s", env_file, svc->pre_script); else strlcpy(buf, svc->pre_script, sizeof(buf)); @@ -2184,8 +2185,9 @@ static void service_post_script(svc_t *svc) rc = WEXITSTATUS(svc->status); sig = WTERMSIG(svc->status); + /* Warning in service_start() after svc_checkenv() */ env_file = svc_getenv(svc); - if (env_file) + if (env_file && fexist(env_file)) snprintf(buf, sizeof(buf), ". %s; exec %s", env_file, svc->post_script); else strlcpy(buf, svc->post_script, sizeof(buf)); @@ -2243,8 +2245,9 @@ void service_ready_script(svc_t *svc) }; char *env_file; + /* Warning in service_start() after svc_checkenv() */ env_file = svc_getenv(svc); - if (env_file) + if (env_file && fexist(env_file)) snprintf(buf, sizeof(buf), ". %s; exec %s", env_file, svc->ready_script); else strlcpy(buf, svc->ready_script, sizeof(buf)); @@ -2278,8 +2281,9 @@ static void service_cleanup_script(svc_t *svc) redirect(svc); + /* Warning in service_start() after svc_checkenv() */ env_file = svc_getenv(svc); - if (env_file) + if (env_file && fexist(env_file)) snprintf(buf, sizeof(buf), ". %s; exec %s", env_file, svc->cleanup_script); else strlcpy(buf, svc->cleanup_script, sizeof(buf));