Do not segfault if PATH is unset.
diff --git a/findutils/which.c b/findutils/which.c
index eec5fdb..b2af5a8 100644
--- a/findutils/which.c
+++ b/findutils/which.c
@@ -38,15 +38,16 @@
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 0000000..e2a2f38
--- /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