From 4a3fef4946659afd27cf8ceb4a9ca2751cc0f46d Mon Sep 17 00:00:00 2001 From: Philip Prindeville Date: Thu, 24 Aug 2023 12:10:58 -0600 Subject: [PATCH] Always log execs --- lib/src/clixon_proc.c | 36 +++++++++++++++++++++++++++++------- lib/src/clixon_string.c | 7 ++----- 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/lib/src/clixon_proc.c b/lib/src/clixon_proc.c index edd3adec..d7114eda 100644 --- a/lib/src/clixon_proc.c +++ b/lib/src/clixon_proc.c @@ -190,13 +190,26 @@ clixon_proc_socket(char **argv, sigfn_t oldhandler = NULL; sigset_t oset; int sig = 0; + unsigned argc; + char *flattened; if (argv == NULL){ clicon_err(OE_UNIX, EINVAL, "argv is NULL"); goto done; } + if (argv[0] == NULL){ + clicon_err(OE_UNIX, EINVAL, "argv[0] is NULL"); + goto done; + } - clicon_debug(1, "%s %s", __FUNCTION__, argv[0]); + for (argc = 0; argv[argc] != NULL; ++argc) + ; + if ((flattened = clicon_strjoin(argc, argv, "', '")) == NULL){ + clicon_err(OE_UNIX, ENOMEM, "clicon_strjoin"); + goto done; + } + clicon_log(LOG_INFO, "%s '%s'", __FUNCTION__, flattened); + free(flattened); if (socketpair(AF_UNIX, sock_flags, 0, sp) < 0){ clicon_err(OE_UNIX, errno, "socketpair"); @@ -297,19 +310,28 @@ clixon_proc_background(char **argv, sigset_t oset; struct rlimit rlim = {0, }; struct stat fstat; + char *flattened; + unsigned argc; clicon_debug(CLIXON_DBG_DEFAULT, "%s", __FUNCTION__); if (argv == NULL){ clicon_err(OE_UNIX, EINVAL, "argv is NULL"); goto quit; } - if (clicon_debug_get()){ - i = 0; - while (argv[i]){ - clicon_debug(1, "%s argv[%d]:%s", __FUNCTION__, i, argv[i]); - i++; - } + if (argv[0] == NULL){ + clicon_err(OE_UNIX, EINVAL, "argv[0] is NULL"); + goto quit; } + + for (argc = 0; argv[argc] != NULL; ++argc) + ; + if ((flattened = clicon_strjoin(argc, argv, "', '")) == NULL){ + clicon_err(OE_UNIX, ENOMEM, "clicon_strjoin"); + goto quit; + } + clicon_log(LOG_INFO, "%s '%s'", __FUNCTION__, flattened); + free(flattened); + /* Sanity check: program exists */ if (stat(argv[0], &fstat) < 0) { clicon_err(OE_FATAL, errno, "%s", argv[0]); diff --git a/lib/src/clixon_string.c b/lib/src/clixon_string.c index b24af14b..c6f686f4 100644 --- a/lib/src/clixon_string.c +++ b/lib/src/clixon_string.c @@ -178,12 +178,9 @@ clixon_string_del_join(char *str1, clicon_err(OE_UNIX, errno, "malloc"); return NULL; } - if (str1){ - snprintf(str, len, "%s%s%s", str1, del, str2); + snprintf(str, len, "%s%s%s", (str1 ? str1 : ""), del, str2); + if (str1) free(str1); - } - else - snprintf(str, len, "%s%s", del, str2); return str; }