X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=src%2Fbox.c;h=3dc4a199b0930908d38dde0cc4cac6280ae1e00a;hb=b9ff9e0a4370eca27410e0295682d806576a42be;hp=2a409a935b6cd1b9662fe2eaece27ea40e73cbaa;hpb=e377cfd3839301178c28f2928e737fd8ad6c70ed;p=eval.git diff --git a/src/box.c b/src/box.c index 2a409a9..3dc4a19 100644 --- a/src/box.c +++ b/src/box.c @@ -35,6 +35,7 @@ static int use_wall_clock; static int file_access; static int verbose; static int memory_limit; +static int allow_times; static char *redir_stdin, *redir_stdout; static pid_t box_pid; @@ -143,7 +144,10 @@ valid_filename(unsigned long addr) && !strstr(namebuf, "..")) return; if (!strcmp(namebuf, "/dev/null") || - !strcmp(namebuf, "/dev/zero")) + !strcmp(namebuf, "/dev/zero") || + !strcmp(namebuf, "/proc/meminfo") || + !strcmp(namebuf, "/proc/self/stat") || + !strncmp(namebuf, "/usr/share/zoneinfo/", 20)) return; } die("Forbidden access to file `%s'.", namebuf); @@ -204,6 +208,7 @@ valid_syscall(struct user *u) case SYS_munmap: case SYS_ioctl: case SYS_uname: + case 252: return 1; case SYS_time: case SYS_alarm: @@ -243,6 +248,8 @@ valid_syscall(struct user *u) case SYS_mmap2: case SYS__sysctl: return (filter_syscalls == 1); + case SYS_times: + return allow_times; default: return 0; } @@ -469,6 +476,7 @@ Options:\n\ -m \tLimit address space to KB\n\ -o \tRedirect stdout to \n\ -t