syscall_exec16: handle disk read failure on exec properly
authorAlan Cox <alan@linux.intel.com>
Wed, 19 Apr 2017 23:13:42 +0000 (00:13 +0100)
committerAlan Cox <alan@linux.intel.com>
Wed, 19 Apr 2017 23:13:42 +0000 (00:13 +0100)
We now kill the process so we don't execute a misloaded image

Kernel/syscall_exec16.c

index 3ff1720..bc8a65d 100644 (file)
@@ -210,7 +210,11 @@ arg_t _execve(void)
 
        if (bin_size > 512) {
                bin_size -= 512;
-               bload(ino, 1, progptr, bin_size);
+               if (bload(ino, 1, progptr, bin_size) < 0) {
+                       /* Must not run userspace */
+                       ssig(udata.u_ptab, SIGKILL);
+                       goto nogood3;
+               }
                progptr += bin_size;
        }