From 86ccb3f9c0e743f3a8113e4d15ec2434a1920bf4 Mon Sep 17 00:00:00 2001 From: jilles Date: Thu, 3 Feb 2011 23:38:11 +0000 Subject: 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(-) (limited to 'bin/sh') diff --git a/bin/sh/exec.c b/bin/sh/exec.c index 5d00bcc..2d781ab 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)); + } } -- cgit v1.1