From a8512146ba9f475a384a35337f51c7730ba7b4ce Mon Sep 17 00:00:00 2001 From: Matthieu Herrb Date: Fri, 11 Nov 2022 14:58:02 +0100 Subject: [PATCH] Don't crash if the client argv or argv[0] is NULL. Report from bauerm at pestilenz dot org. Part-of: --- os/client.c | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/os/client.c b/os/client.c index 6a119afc1..7752591aa 100644 --- a/os/client.c +++ b/os/client.c @@ -325,18 +325,26 @@ DetermineClientCmd(pid_t pid, const char **cmdname, const char **cmdargs) if (n != 1) return; argv = kvm_getargv(kd, kp, 0); - *cmdname = strdup(argv[0]); - i = 1; - while (argv[i] != NULL) { - len += strlen(argv[i]) + 1; - i++; + if (cmdname) { + if (argv == NULL || argv[0] == NULL) { + *cmdname = strdup(""); + return; + } else + *cmdname = strdup(argv[0]); } - *cmdargs = calloc(1, len); - i = 1; - while (argv[i] != NULL) { - strlcat(*cmdargs, argv[i], len); - strlcat(*cmdargs, " ", len); - i++; + if (cmdargs) { + i = 1; + while (argv[i] != NULL) { + len += strlen(argv[i]) + 1; + i++; + } + *cmdargs = calloc(1, len); + i = 1; + while (argv[i] != NULL) { + strlcat(*(char **)cmdargs, argv[i], len); + strlcat(*(char **)cmdargs, " ", len); + i++; + } } kvm_close(kd); }