From d363501e210e41d42bc3e607c73589df8ca9c541 Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Wed, 22 Feb 2023 19:46:33 +0100 Subject: [PATCH] Fix parse/diff of command line args, e.g., nginx -g 'daemon off;' Starting a service like this works fine: service [2345789] env:-/etc/default/nginx nginx -g 'daemon off;' However, on `initctl reload` the previous argument was lost while parsing the end of the new one. So the comparison always resulted in a 'diff' causing the service to be unnecessarily restarted. Signed-off-by: Joachim Wiberg --- src/service.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/service.c b/src/service.c index fd5fd2a0..193ac053 100644 --- a/src/service.c +++ b/src/service.c @@ -1244,6 +1244,7 @@ static char *parse_name(char *cmd, char *arg) */ static void parse_cmdline_args(svc_t *svc, char *cmd, char **args) { + char prev[MAX_ARG_LEN]; int diff = 0; char sep = 0; char *arg; @@ -1258,7 +1259,6 @@ static void parse_cmdline_args(svc_t *svc, char *cmd, char **args) * array to be zero-terminated. */ while ((arg = strtok_r(NULL, " ", args)) && i < (MAX_NUM_SVC_ARGS - 1)) { - char prev[sizeof(svc->args[0])] = { 0 }; char ch = arg[0]; size_t len;