From 03b4958dd49fda257c130d3fd9f1b6bafc00e36d Mon Sep 17 00:00:00 2001 From: Herbert Xu Date: Mon, 15 Oct 2007 20:24:28 +0800 Subject: [EXEC] Fixed execing of scripts with no hash-bang The function tryexec used the original name instead of the path found through PATH search. This patch fixes that. Test case: trap 'rm -f $TMP' EXIT TMP=$(tempfile -s nosuchthing) cat <<- EOF > $TMP echo OK EOF chmod u+x $TMP cd / PATH=${TMP%/*} ${TMP##*/} Old result: /bin/sh: Can't open filelgY4Fanosuchthing New result: OK --- src/eval.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/eval.c') diff --git a/src/eval.c b/src/eval.c index 2aa8317..1e0edd9 100644 --- a/src/eval.c +++ b/src/eval.c @@ -727,7 +727,8 @@ evalcommand(union node *cmd, int flags) argc++; } - argv = nargv = stalloc(sizeof (char *) * (argc + 1)); + /* Reserve one extra spot at the front for shellexec. */ + argv = nargv = stalloc(sizeof (char *) * (argc + 2)) + 1; for (sp = arglist.list ; sp ; sp = sp->next) { TRACE(("evalcommand arg: %s\n", sp->text)); *nargv++ = sp->text; -- cgit 1.4.1