From 8d04aaa30c70eadf29d536c5b3c09c68e7797611 Mon Sep 17 00:00:00 2001 From: maxv Date: Mon, 30 Jun 2014 17:22:32 +0000 Subject: If the interpreter is "", do not keep loading the script (which will later fail), but return ENOEXEC directly. ok christos@ --- sys/kern/exec_script.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'sys/kern/exec_script.c') diff --git a/sys/kern/exec_script.c b/sys/kern/exec_script.c index 55c09aa608c..7b0acaa3d9e 100644 --- a/sys/kern/exec_script.c +++ b/sys/kern/exec_script.c @@ -1,4 +1,4 @@ -/* $NetBSD: exec_script.c,v 1.71 2014/06/23 18:06:32 maxv Exp $ */ +/* $NetBSD: exec_script.c,v 1.72 2014/06/30 17:22:32 maxv Exp $ */ /* * Copyright (c) 1993, 1994, 1996 Christopher G. Demetriou @@ -31,7 +31,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: exec_script.c,v 1.71 2014/06/23 18:06:32 maxv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: exec_script.c,v 1.72 2014/06/30 17:22:32 maxv Exp $"); #if defined(SETUIDSCRIPTS) && !defined(FDSCRIPTS) #define FDSCRIPTS /* Need this for safe set-id scripts. */ @@ -163,12 +163,12 @@ exec_script_makecmds(struct lwp *l, struct exec_package *epp) for (cp = hdrstr + EXEC_SCRIPT_MAGICLEN; *cp == ' ' || *cp == '\t'; cp++) ; + if (*cp == '\0') + return ENOEXEC; /* collect the shell name; remember it's length for later */ shellname = cp; shellnamelen = 0; - if (*cp == '\0') - goto check_shell; for ( /* cp = cp */ ; *cp != '\0' && *cp != ' ' && *cp != '\t'; cp++) shellnamelen++; if (*cp == '\0') -- cgit