From 740ea28f29bb85fafccac81d2c13c2970a0d82b7 Mon Sep 17 00:00:00 2001 From: David Gibson Date: Wed, 28 Sep 2022 14:33:30 +1000 Subject: qrap: Handle case of PATH environment variable being unset clang-tidy warns that in passing getenv("PATH") to strncpy() we could be passing a NULL pointer. While it's unusual for PATH to be unset, it's not impossible and this would indeed cause getenv() to return NULL. Handle this case by never recognizing argv[2] as a qemu binary name if PATH is not set. This is... no flakier than the detection of whether it's a binary name already is. Signed-off-by: David Gibson Signed-off-by: Stefano Brivio --- qrap.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/qrap.c b/qrap.c index 3138386..a9a0fc1 100644 --- a/qrap.c +++ b/qrap.c @@ -173,12 +173,13 @@ int main(int argc, char **argv) char probe_r; if (argc >= 3) { + const char *path = getenv("PATH"); errno = 0; fd = strtol(argv[1], NULL, 0); - if (fd >= 3 && fd < INT_MAX && !errno) { + if (fd >= 3 && fd < INT_MAX && !errno && path) { char env_path[ARG_MAX + 1], *p, command[ARG_MAX]; - strncpy(env_path, getenv("PATH"), ARG_MAX); + strncpy(env_path, path, ARG_MAX); /* cppcheck-suppress strtokCalled */ p = strtok(env_path, ":"); while (p) { -- cgit v1.2.3