]> Zhao Yanbai Git Server - minix.git/commitdiff
vfs,avfs: verify an interpreter was found on #! line
authorBen Gras <ben@minix3.org>
Tue, 20 Dec 2011 15:20:32 +0000 (16:20 +0100)
committerBen Gras <ben@minix3.org>
Wed, 21 Dec 2011 22:44:13 +0000 (23:44 +0100)
. if not, NULL *interp is dereferenced

servers/avfs/exec.c
servers/vfs/exec.c
test/run
test/testinterp.sh [new file with mode: 0755]

index 45a1b932182f820bb1558f1578a53a765469c582..5b0ac598c4e331c1d8b2acc2816edb182b895ea5 100644 (file)
@@ -503,6 +503,9 @@ char path[PATH_MAX];                /* path to script file */
        }
   }
 
+  if(!interp)
+       return ENOEXEC;
+
   /* Round *stk_bytes up to the size of a pointer for alignment contraints. */
   *stk_bytes= ((*stk_bytes + PTRSIZE - 1) / PTRSIZE) * PTRSIZE;
 
index d05fc3b37092658e3c8f22ca2d3ae468a041d886..43af7d6a2a86075abaa94d0f451eacad6bf70a94 100644 (file)
@@ -444,6 +444,9 @@ vir_bytes *stk_bytes                /* size of initial stack */
        }
   }
 
+  if(!interp)
+       return ENOEXEC;
+
   /* Round *stk_bytes up to the size of a pointer for alignment contraints. */
   *stk_bytes= ((*stk_bytes + PTRSIZE - 1) / PTRSIZE) * PTRSIZE;
 
index eed3970cae3f9890aa8660c40380b2bf72b09995..1069c6f06c7177e5f49c1a4ccf77a6ee0902659e 100755 (executable)
--- a/test/run
+++ b/test/run
@@ -16,7 +16,7 @@ tests="   1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 \
          41 42 43 44 45 45-gcc 46 47 48 49 49-gcc 50 \
          51 51-gcc 52 52-gcc 53 54 55 56 57 58 59\
          60 61 \
-        sh1.sh sh2.sh"
+        sh1.sh sh2.sh interp.sh"
 tests_no=`expr 0`
 
 # Directory must be owned by bin
diff --git a/test/testinterp.sh b/test/testinterp.sh
new file mode 100755 (executable)
index 0000000..b00c8e0
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+# See if the system can handle an unexpected whitespace-only interpreter line
+
+echo -n "Test interpreter "
+
+set -e
+TMPSH=tst$$.sh
+rm -f $TMPSH
+echo '#!   ' >$TMPSH
+chmod 755 $TMPSH
+./$TMPSH || true
+rm -f $TMPSH
+echo "ok"