Selaa lähdekoodia

fix execvp failing on not-dir entries in PATH.

It's better to make execvp continue PATH search on ENOTDIR rather than
issuing an error. Bogus entries should not render rest of PATH invalid.

Maintainer's note: POSIX seems to require the search to continue like
this as part of XBD 8.3 Other Environment Variables. Only errors that
conclusively determine non-existence are candidates for continuing;
otherwise for consistency we have to report the error.
Przemyslaw Pawelczyk 7 vuotta sitten
vanhempi
sitoutus
8e0b38060d
1 muutettua tiedostoa jossa 1 lisäystä ja 1 poistoa
  1. 1 1
      src/process/execvp.c

+ 1 - 1
src/process/execvp.c

@@ -40,7 +40,7 @@ int __execvpe(const char *file, char *const argv[], char *const envp[])
 		memcpy(b+(z-p)+(z>p), file, k+1);
 		execve(b, argv, envp);
 		if (errno == EACCES) seen_eacces = 1;
-		else if (errno != ENOENT) return -1;
+		else if (errno != ENOENT && errno != ENOTDIR) return -1;
 		if (!*z++) break;
 	}
 	if (seen_eacces) errno = EACCES;