From: Przemyslaw Pawelczyk Date: Sun, 22 Oct 2017 22:07:42 +0000 (+0200) Subject: fix execvp failing on not-dir entries in PATH. X-Git-Tag: v1.1.19~4 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=8e0b38060d7a9916fc2b5de0dd7c166ef60be9c1;p=oweals%2Fmusl.git 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. --- diff --git a/src/process/execvp.c b/src/process/execvp.c index 3a8bbe83..480a85e9 100644 --- a/src/process/execvp.c +++ b/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;