[comp.bugs.4bsd] execve

gww@marduk.UUCP (Gary Winiger) (09/05/87)

Subject: execve(2) doesn't report ENOEXEC if ``#!'' line is too long. +Fix
Index:	sys/kern_exec.c 4.3BSD +Fix

Description:
	When executing a file which contains an ASCII line beginning with
	``#!'' and that line is longer than SHSIZE, ENOEXEC is not reported.
Repeat-By:
	Execute a file containing the following single line:
	#! /usr/bin/../../bin/../bin/ls -Rgls
Fix:
	The attached code solves this problem at Elxsi.

Gary..
{ucbvax!sun,lll-lcc!lll-tis,amdahl!altos86,bridge2}!elxsi!gww
--------- cut --------- snip --------- :.,$w diff -------------
*** /tmp/,RCSt1000274	Fri Jun 19 12:29:02 1987
--- kern_exec.c	Fri Jun 19 12:28:37 1987
***************
*** 1,6 ****
! /*	$Header: kern_exec.c,v 1.1 87/04/08 14:49:36 gww Exp $ ENIX BSD
   *
   * $Log:	kern_exec.c,v $
   * Revision 1.1  87/04/08  14:49:36  gww
   * Initial revision
   * 
--- 1,9 ----
! /*	$Header: kern_exec.c,v 1.2 87/06/19 12:27:57 gww Exp $ ENIX BSD
   *
   * $Log:	kern_exec.c,v $
+  * Revision 1.2  87/06/19  12:27:57  gww
+  * Correctly test for ASCII line (#!) being too long.
+  * 
   * Revision 1.1  87/04/08  14:49:36  gww
   * Initial revision
   * 
***************
*** 159,165 ****
  			}
  			cp++;
  		}
! 		if (*cp != '\0') {
  			u.u_error = ENOEXEC;
  			goto bad;
  		}
--- 162,168 ----
  			}
  			cp++;
  		}
! 		if (cp >= &exdata.ex_shell[SHSIZE]) {
  			u.u_error = ENOEXEC;
  			goto bad;
  		}