diff options
author | Matt Kraai <kraai@debian.org> | 2002-01-14 18:30:10 +0000 |
---|---|---|
committer | Matt Kraai <kraai@debian.org> | 2002-01-14 18:30:10 +0000 |
commit | a3181dd833970b1aa99087c3e3647387116547f0 (patch) | |
tree | 60f79ccf57bb1028f73230e677ad628b21f28d16 | |
parent | ba552523fafaf687c6c6cf6113fe7b6c1b786920 (diff) | |
download | busybox-a3181dd833970b1aa99087c3e3647387116547f0.tar.gz |
Do not segfault if PATH is unset.
-rw-r--r-- | findutils/which.c | 19 | ||||
-rw-r--r-- | testsuite/which/which-uses-default-path | 8 |
2 files changed, 18 insertions, 9 deletions
diff --git a/findutils/which.c b/findutils/which.c index eec5fdbfb..b2af5a8ea 100644 --- a/findutils/which.c +++ b/findutils/which.c @@ -38,15 +38,16 @@ extern int which_main(int argc, char **argv) argc--; path_list = getenv("PATH"); - if (!path_list) - path_list = "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin"; - - /* Replace colons with zeros in path_parsed and count them */ - for(i=strlen(path_list); i > 0; i--) - if (path_list[i]==':') { - path_list[i]=0; - count++; - } + if (path_list != NULL) { + for(i=strlen(path_list); i > 0; i--) + if (path_list[i]==':') { + path_list[i]=0; + count++; + } + } else { + path_list = "/bin\0/sbin\0/usr/bin\0/usr/sbin\0/usr/local/bin"; + count = 5; + } while(argc-- > 0) { path_n = path_list; diff --git a/testsuite/which/which-uses-default-path b/testsuite/which/which-uses-default-path new file mode 100644 index 000000000..e2a2f3893 --- /dev/null +++ b/testsuite/which/which-uses-default-path @@ -0,0 +1,8 @@ +BUSYBOX=$(type -p busybox) +echo $BUSYBOX +SAVED_PATH=$PATH +unset PATH +$BUSYBOX which ls +STATUS=$? +export PATH=$SAVED_PATH +return $STATUS |