From 834d160b3a9133128c64362a8c9a880909c946d3 Mon Sep 17 00:00:00 2001 From: Jilles Tjoelker Date: Thu, 3 Feb 2011 23:38:11 +0000 Subject: [PATCH] sh: Return only 126 or 127 for execve() failures. Do not return 2 for errors other than [EACCES] or [ENOENT]. --- bin/sh/exec.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/bin/sh/exec.c b/bin/sh/exec.c index 5d00bcce3040..2d781abc4756 100644 --- a/bin/sh/exec.c +++ b/bin/sh/exec.c @@ -129,20 +129,13 @@ shellexec(char **argv, char **envp, const char *path, int idx) } /* Map to POSIX errors */ - switch (e) { - case EACCES: - exerrno = 126; - break; - case ENOENT: + if (e == ENOENT || e == ENOTDIR) { exerrno = 127; - break; - default: - exerrno = 2; - break; - } - if (e == ENOENT || e == ENOTDIR) exerror(EXEXEC, "%s: not found", argv[0]); - exerror(EXEXEC, "%s: %s", argv[0], strerror(e)); + } else { + exerrno = 126; + exerror(EXEXEC, "%s: %s", argv[0], strerror(e)); + } }