diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2022-09-28 14:33:30 +1000 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2022-09-29 12:22:28 +0200 |
commit | 740ea28f29bb85fafccac81d2c13c2970a0d82b7 (patch) | |
tree | 913d0ed20153ef16421b16a99df9857569c4f4a2 /qrap.c | |
parent | b35a6cfa0c7dbc92fd54f96072de26c3b687ce82 (diff) | |
download | passt-740ea28f29bb85fafccac81d2c13c2970a0d82b7.tar passt-740ea28f29bb85fafccac81d2c13c2970a0d82b7.tar.gz passt-740ea28f29bb85fafccac81d2c13c2970a0d82b7.tar.bz2 passt-740ea28f29bb85fafccac81d2c13c2970a0d82b7.tar.lz passt-740ea28f29bb85fafccac81d2c13c2970a0d82b7.tar.xz passt-740ea28f29bb85fafccac81d2c13c2970a0d82b7.tar.zst passt-740ea28f29bb85fafccac81d2c13c2970a0d82b7.zip |
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 <david@gibson.dropbear.id.au>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'qrap.c')
-rw-r--r-- | qrap.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -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) { |