]> mj.ucw.cz Git - moe.git/blobdiff - src/box.c
.
[moe.git] / src / box.c
index 783b11b98c2054e79f1d13d65bc8a0de81da0aac..062110f27200e8c0b0966b9e550a0276f8dbb1ee 100644 (file)
--- a/src/box.c
+++ b/src/box.c
@@ -1,7 +1,7 @@
 /*
  *     A Simple Testing Sandbox
  *
- *     (c) 2001 Martin Mares <mj@ucw.cz>
+ *     (c) 2001--2004 Martin Mares <mj@ucw.cz>
  */
 
 #define _LARGEFILE64_SOURCE
@@ -251,6 +251,10 @@ valid_syscall(struct user *u)
       return (filter_syscalls == 1);
     case SYS_times:
       return allow_times;
+    case SYS_kill:
+      if (u->regs.ebx == box_pid)
+       die("Commited suicide by signal %d.", (int)u->regs.ecx);
+      return 0;
     default:
       return 0;
     }
@@ -431,6 +435,8 @@ box_inside(int argc, char **argv)
 
   memcpy(args, argv, argc * sizeof(char *));
   args[argc] = NULL;
+  if (set_cwd && chdir(set_cwd))
+    die("chdir: %m");
   if (redir_stdin)
     {
       close(0);
@@ -443,8 +449,6 @@ box_inside(int argc, char **argv)
       if (open(redir_stdout, O_WRONLY | O_CREAT | O_TRUNC, 0666) != 1)
        die("open(\"%s\"): %m", redir_stdout);
     }
-  if (set_cwd && chdir(set_cwd))
-    die("chdir: %m");
   dup2(1, 2);
   setpgrp();
   if (memory_limit)