| Common subdirectories: scrashme/.git and scrashme.new/.git |
| diff --new-file --unified=5 scrashme/arm.h scrashme.new/arm.h |
| --- scrashme/arm.h 1969-12-31 16:00:00.000000000 -0800 |
| +++ scrashme.new/arm.h 2011-03-21 14:43:40.000000000 -0700 |
| @@ -0,0 +1,4 @@ |
| +#include "syscalls-arm.h" |
| + |
| +#define KERNEL_ADDR 0xc0000000 |
| + |
| diff --new-file --unified=5 scrashme/sanitise.c scrashme.new/sanitise.c |
| --- scrashme/sanitise.c 2010-03-18 04:45:47.000000000 -0700 |
| +++ scrashme.new/sanitise.c 2011-03-22 07:04:23.444767234 -0700 |
| @@ -21,10 +21,14 @@ |
| #endif |
| #ifdef __powerpc__ |
| #define PAGE_OFFSET 0xC0000000 |
| #define TASK_SIZE (PAGE_OFFSET) |
| #endif |
| +#ifdef __arm__ |
| +#define PAGE_OFFSET 0xC0000000 |
| +#define TASK_SIZE (PAGE_OFFSET) |
| +#endif |
| #ifdef __ia64__ |
| #define PAGE_OFFSET 0xe000000000000000 |
| #define TASK_SIZE 0xa000000000000000 |
| #endif |
| #ifdef __sparc__ |
| diff --new-file --unified=5 scrashme/scrashme.c scrashme.new/scrashme.c |
| --- scrashme/scrashme.c 2010-03-18 04:45:47.000000000 -0700 |
| +++ scrashme.new/scrashme.c 2011-03-22 07:04:54.584919926 -0700 |
| @@ -25,10 +25,13 @@ |
| #include "x86-64.h" |
| #endif |
| #ifdef __i386__ |
| #include "i386.h" |
| #endif |
| +#ifdef __arm__ |
| +#include "arm.h" |
| +#endif |
| #ifdef __powerpc__ |
| #include "ppc.h" |
| #endif |
| #ifdef __ia64__ |
| #include "ia64.h" |
| @@ -481,11 +484,13 @@ |
| } |
| (void)signal(SIGCHLD, SIG_IGN); |
| |
| srand(seed); |
| |
| - chroot("tmp"); |
| + if (chroot("tmp")) { |
| + printf("chroot failed!\n"); |
| + } |
| } |
| |
| static void run_mode(void) |
| { |
| int i; |
| @@ -582,12 +587,16 @@ |
| syscalls = syscalls_ppc; |
| #elif __ia64__ |
| syscalls = syscalls_ia64; |
| #elif __sparc__ |
| syscalls = syscalls_sparc; |
| -#else |
| +#elif __i386__ |
| syscalls = syscalls_i386; |
| +#elif __arm__ |
| + syscalls = syscalls_arm; |
| +#else |
| +#error Currently unsupported syscall architecture. |
| #endif |
| |
| page_size = getpagesize(); |
| |
| progname = argv[0]; |
| diff --new-file --unified=5 scrashme/syscalls-arm.h scrashme.new/syscalls-arm.h |
| --- scrashme/syscalls-arm.h 1969-12-31 16:00:00.000000000 -0800 |
| +++ scrashme.new/syscalls-arm.h 2011-03-22 10:29:47.995365865 -0700 |
| @@ -0,0 +1,373 @@ |
| +/* Syscalls from arch/arm/kernel/call.S as of 2.6.32.26+drm33.12 */ |
| + |
| +#include "scrashme.h" |
| +#include "sanitise.h" |
| + |
| +#define NR_SYSCALLS 364 |
| +struct syscalltable syscalls_arm[NR_SYSCALLS + 1] = { |
| +/* 0 */ { .name = "restart_syscall" }, |
| + { .name = "exit", .flags = AVOID_SYSCALL }, |
| + { .name = "fork_wrapper", .flags = AVOID_SYSCALL }, |
| + { .name = "read", .sanitise = sanitise_read }, |
| + { .name = "write", .sanitise = sanitise_write }, |
| +/* 5 */ { .name = "open" }, |
| + { .name = "close", .sanitise = sanitise_close }, |
| + { .name = "ni_syscall" }, /* was sys_waitpid */ |
| + { .name = "creat" }, |
| + { .name = "link" }, |
| +/* 10 */ { .name = "unlink" }, |
| + { .name = "execve_wrapper" }, |
| + { .name = "chdir" }, |
| + { .name = "time", .flags = AVOID_SYSCALL }, /* used by libc4 */ |
| + { .name = "mknod" }, |
| +/* 15 */ { .name = "chmod" }, |
| + { .name = "lchown16" }, |
| + { .name = "ni_syscall" }, /* was sys_break */ |
| + { .name = "ni_syscall" }, /* was sys_stat */ |
| + { .name = "lseek", .sanitise = sanitise_lseek }, |
| +/* 20 */ { .name = "getpid" }, |
| + { .name = "mount" }, |
| + { .name = "oldumount", .flags = AVOID_SYSCALL }, /* used by libc4 */ |
| + { .name = "setuid16" }, |
| + { .name = "getuid16" }, |
| +/* 25 */ { .name = "stime", .flags = AVOID_SYSCALL }, |
| + { .name = "ptrace" }, |
| + { .name = "alarm", .flags = AVOID_SYSCALL }, /* used by libc4 */ |
| + { .name = "ni_syscall" }, /* was sys_fstat */ |
| + { .name = "pause", .flags = AVOID_SYSCALL }, |
| +/* 30 */ { .name = "utime", .flags = AVOID_SYSCALL }, /* used by libc4 */ |
| + { .name = "ni_syscall" }, /* was sys_stty */ |
| + { .name = "ni_syscall" }, /* was sys_getty */ |
| + { .name = "access" }, |
| + { .name = "nice" }, |
| +/* 35 */ { .name = "ni_syscall" }, /* was sys_ftime */ |
| + { .name = "sync" }, |
| + { .name = "kill" }, |
| + { .name = "rename" }, |
| + { .name = "mkdir" }, |
| +/* 40 */ { .name = "rmdir" }, |
| + { .name = "dup" }, |
| + { .name = "pipe" }, |
| + { .name = "times" }, |
| + { .name = "ni_syscall" }, /* was sys_prof */ |
| +/* 45 */ { .name = "brk" }, |
| + { .name = "setgid16" }, |
| + { .name = "getgid16" }, |
| + { .name = "ni_syscall" }, /* was sys_signal */ |
| + { .name = "geteuid16" }, |
| +/* 50 */ { .name = "getegid16" }, |
| + { .name = "acct" }, |
| + { .name = "umount" }, |
| + { .name = "ni_syscall" }, /* was sys_lock */ |
| + { .name = "ioctl", .sanitise = sanitise_ioctl }, |
| +/* 55 */ { .name = "fcntl" }, |
| + { .name = "ni_syscall" }, /* was sys_mpx */ |
| + { .name = "setpgid" }, |
| + { .name = "ni_syscall" }, /* was sys_ulimit */ |
| + { .name = "ni_syscall" }, /* was sys_olduname */ |
| +/* 60 */ { .name = "umask" }, |
| + { .name = "chroot" }, |
| + { .name = "ustat" }, |
| + { .name = "dup2" }, |
| + { .name = "getppid" }, |
| +/* 65 */ { .name = "getpgrp" }, |
| + { .name = "setsid" }, |
| + { .name = "sigaction" }, |
| + { .name = "ni_syscall" }, /* was sys_sgetmask */ |
| + { .name = "ni_syscall" }, /* was sys_ssetmask */ |
| +/* 70 */ { .name = "setreuid16" }, |
| + { .name = "setregid16" }, |
| + { .name = "sigsuspend", .flags = AVOID_SYSCALL }, |
| + { .name = "sigpending" }, |
| + { .name = "sethostname" }, |
| +/* 75 */ { .name = "setrlimit" }, |
| + { .name = "old_getrlimit", .flags = AVOID_SYSCALL }, /* used by libc4 */ |
| + { .name = "getrusage" }, |
| + { .name = "gettimeofday" }, |
| + { .name = "settimeofday" }, |
| +/* 80 */ { .name = "getgroups16" }, |
| + { .name = "setgroups16" }, |
| + { .name = "old_select", .flags = AVOID_SYSCALL }, |
| + { .name = "symlink" }, |
| + { .name = "ni_syscall" }, /* was sys_lstat */ |
| +/* 85 */ { .name = "readlink" }, |
| + { .name = "uselib" }, |
| + { .name = "swapon" }, |
| + { .name = "reboot" }, |
| + { .name = "old_readdir", .flags = AVOID_SYSCALL }, /* used by libc4 */ |
| +/* 90 */ { .name = "old_mmaap", .flags = AVOID_SYSCALL }, /* used by libc4 */ |
| + { .name = "munmap" }, |
| + { .name = "truncate" }, |
| + { .name = "ftruncate" }, |
| + { .name = "fchmod" }, |
| +/* 95 */ { .name = "fchown16" }, |
| + { .name = "getpriority" }, |
| + { .name = "setpriority" }, |
| + { .name = "ni_syscall" }, /* was sys_profil */ |
| + { .name = "statfs" }, |
| +/* 100 */ { .name = "fstatfs" }, |
| + { .name = "ni_syscall" }, /* sys_ioperm */ |
| + { .name = "sys_socketcall", .flags = AVOID_SYSCALL }, |
| + { .name = "syslog" }, |
| + { .name = "setitimer" }, |
| +/* 105 */ { .name = "getitimer" }, |
| + { .name = "newstat" }, |
| + { .name = "newlstat" }, |
| + { .name = "newfstat", .sanitise = sanitise_newfstat }, |
| + { .name = "ni_syscall" }, /* was sys_uname */ |
| +/* 110 */ { .name = "ni_syscall" }, /* was sys_iopl */ |
| + { .name = "vhangup" }, |
| + { .name = "ni_syscall" }, |
| + { .name = "syscall", .flags = AVOID_SYSCALL }, /* call a syscall */ |
| + { .name = "wait4" }, |
| +/* 115 */ { .name = "swapoff" }, |
| + { .name = "sysinfo" }, |
| + { .name = "sys_ipc", .flags = AVOID_SYSCALL }, |
| + { .name = "fsync" }, |
| + { .name = "sigreturn_wrapper" }, |
| +/* 120 */ { .name = "clone_wrapper", .flags = AVOID_SYSCALL }, |
| + { .name = "setdomainname" }, |
| + { .name = "newuname" }, |
| + { .name = "ni_syscall" }, /* modify_ldt */ |
| + { .name = "adjtimex" }, |
| +/* 125 */ { .name = "mprotect", .sanitise = sanitise_mprotect }, |
| + { .name = "sigprocmask" }, |
| + { .name = "ni_syscall" }, /* was sys_create_module */ |
| + { .name = "init_module" }, |
| + { .name = "delete_module" }, |
| +/* 130 */ { .name = "ni_syscall" }, /* was sys_get_kernel_syms */ |
| + { .name = "quotactl" }, |
| + { .name = "getpgid" }, |
| + { .name = "fchdir" }, |
| + { .name = "bdflush" }, |
| +/* 135 */ { .name = "sysfs" }, |
| + { .name = "personality" }, |
| + { .name = "ni_syscall" }, /* reserved for afs_syscall */ |
| + { .name = "setfsuid16" }, |
| + { .name = "setfsgid16" }, |
| +/* 140 */ { .name = "llseek" }, |
| + { .name = "getdents" }, |
| + { .name = "select", .flags = AVOID_SYSCALL }, |
| + { .name = "flock" }, |
| + { .name = "msync" }, |
| +/* 145 */ { .name = "readv", .sanitise = sanitise_readv }, |
| + { .name = "writev", .sanitise = sanitise_writev }, |
| + { .name = "getsid" }, |
| + { .name = "fdatasync" }, |
| + { .name = "sysctl" }, |
| +/* 150 */ { .name = "mlock" }, |
| + { .name = "munlock" }, |
| + { .name = "mlockall" }, |
| + { .name = "munlockall" }, |
| + { .name = "sched_setparam" }, |
| +/* 155 */ { .name = "sched_getparam" }, |
| + { .name = "sched_setscheduler" }, |
| + { .name = "sched_getscheduler" }, |
| + { .name = "sched_yield" }, |
| + { .name = "sched_get_priority_max" }, |
| +/* 160 */ { .name = "sched_get_priority_min" }, |
| + { .name = "sched_rr_get_interval" }, |
| + { .name = "nanosleep" }, |
| + { .name = "mremap", .sanitise = sanitise_mremap }, |
| + { .name = "setresuid16" }, |
| +/* 165 */ { .name = "getresuid16" }, |
| + { .name = "ni_syscall" }, /* vm86 */ |
| + { .name = "ni_syscall" }, /* was sys_query_module */ |
| + { .name = "poll" }, |
| + { .name = "nfsservctl" }, |
| +/* 170 */ { .name = "setresgid16" }, |
| + { .name = "getresgid16" }, |
| + { .name = "prctl" }, |
| + { .name = "rt_sigreturn_wrapper" }, |
| + { .name = "rt_sigaction", .sanitise = sanitise_rt_sigaction }, |
| +/* 175 */ { .name = "rt_sigprocmask", .sanitise = sanitise_rt_sigprocmask }, |
| + { .name = "rt_sigpending" }, |
| + { .name = "rt_sigtimedwait" }, |
| + { .name = "rt_sigqueueinfo" }, |
| + { .name = "rt_sigsuspend", .flags = AVOID_SYSCALL }, |
| +/* 180 */ { .name = "pread64", .sanitise = sanitise_pread64 }, |
| + { .name = "pwrite64", .sanitise = sanitise_pwrite64 }, |
| + { .name = "chown16" }, |
| + { .name = "getcwd" }, |
| + { .name = "capget" }, |
| +/* 185 */ { .name = "capset" }, |
| + { .name = "sigaltstack_wrapper" }, |
| + { .name = "sendfile" }, |
| + { .name = "ni_syscall" }, /* getpmsg */ |
| + { .name = "ni_syscall" }, /* putpmsg */ |
| +/* 190 */ { .name = "vfork_wrapper", .flags = AVOID_SYSCALL }, |
| + { .name = "getrlimit" }, |
| + { .name = "mmap2", .sanitise = sanitise_mmap }, |
| + { .name = "truncate64" }, |
| + { .name = "ftruncate64" }, |
| + /* 195 */ { .name = "stat64" }, |
| + { .name = "lstat64" }, |
| + { .name = "fstat64" }, |
| + { .name = "lchown" }, |
| + { .name = "getuid" }, |
| +/* 200 */ { .name = "getgid" }, |
| + { .name = "geteuid" }, |
| + { .name = "getegid" }, |
| + { .name = "setreuid" }, |
| + { .name = "setregid" }, |
| +/* 205 */ { .name = "getgroups" }, |
| + { .name = "setgroups" }, |
| + { .name = "fchown" }, |
| + { .name = "setresuid" }, |
| + { .name = "getresuid" }, |
| +/* 210 */ { .name = "setresgid" }, |
| + { .name = "getresgid" }, |
| + { .name = "chown" }, |
| + { .name = "setuid" }, |
| + { .name = "setgid" }, |
| +/* 215 */ { .name = "setfsuid" }, |
| + { .name = "setfsgid" }, |
| + { .name = "getdents64" }, |
| + { .name = "pivot_root", .flags = CAPABILITY_CHECK }, |
| + { .name = "mincore" }, |
| +/* 220 */ { .name = "madvise" }, |
| + { .name = "fcntl64" }, |
| + { .name = "ni_syscall" }, /* TUX */ |
| + { .name = "ni_syscall" }, |
| + { .name = "gettid" }, |
| +/* 225 */ { .name = "readahead" }, |
| + { .name = "setxattr" }, |
| + { .name = "lsetxattr" }, |
| + { .name = "fsetxattr" }, |
| + { .name = "getxattr" }, |
| +/* 230 */ { .name = "lgetxattr" }, |
| + { .name = "fgetxattr" }, |
| + { .name = "listxattr" }, |
| + { .name = "llistxattr" }, |
| + { .name = "flistxattr" }, |
| +/* 235 */ { .name = "removexattr" }, |
| + { .name = "lremovexattr" }, |
| + { .name = "fremovexattr" }, |
| + { .name = "tkill" }, |
| + { .name = "sendfile64" }, |
| +/* 240 */ { .name = "futex" }, |
| + { .name = "sched_setaffinity" }, |
| + { .name = "sched_getaffinity" }, |
| + { .name = "io_setup" }, |
| + { .name = "io_destroy" }, |
| +/* 245 */ { .name = "io_getevents" }, |
| + { .name = "io_submit" }, |
| + { .name = "io_cancel" }, |
| + { .name = "exit_group", .flags = AVOID_SYSCALL }, |
| + { .name = "lookup_dcookie", .flags = CAPABILITY_CHECK }, |
| +/* 250 */ { .name = "epoll_create" }, |
| + { .name = "epoll_ctl" }, |
| + { .name = "_epoll_wait" }, |
| + { .name = "remap_file_pages" }, |
| + { .name = "ni_syscall" }, /* sys_set_thread_area */ |
| +/* 255 */ { .name = "ni_syscall" }, /* sys_get_thread_area */ |
| + { .name = "set_tid_address" }, |
| + { .name = "timer_create" }, |
| + { .name = "timer_settime" }, |
| + { .name = "timer_gettime" }, |
| +/* 260 */ { .name = "timer_getoverrun" }, |
| + { .name = "timer_delete" }, |
| + { .name = "clock_settime" }, |
| + { .name = "clock_gettime" }, |
| + { .name = "clock_getres" }, |
| +/* 265 */ { .name = "clock_nanosleep" }, |
| + { .name = "statfs64_wrapper" }, |
| + { .name = "fstatfs64_wrapper" }, |
| + { .name = "tgkill" }, |
| + { .name = "utimes" }, |
| +/* 270 */ { .name = "arm_fadvise64_64" }, |
| + { .name = "pciconfig_iobase" }, |
| + { .name = "pciconfig_read" }, |
| + { .name = "pciconfig_write" }, |
| + { .name = "mq_open" }, |
| +/* 275 */ { .name = "mq_unlink" }, |
| + { .name = "mq_timedsend" }, |
| + { .name = "mq_timedreceive" }, |
| + { .name = "mq_notify" }, |
| + { .name = "mq_getsetattr" }, |
| +/* 280 */ { .name = "waitid" }, |
| + { .name = "socket" }, |
| + { .name = "bind" }, |
| + { .name = "connect" }, |
| + { .name = "listen" }, |
| +/* 285 */ { .name = "accept" }, |
| + { .name = "getsockname" }, |
| + { .name = "getpeername" }, |
| + { .name = "socketpair" }, |
| + { .name = "send" }, |
| +/* 290 */ { .name = "sendto" }, |
| + { .name = "recv" }, |
| + { .name = "recvfrom" }, |
| + { .name = "shutdown" }, |
| + { .name = "setsockopt" }, |
| +/* 295 */ { .name = "getsockopt" }, |
| + { .name = "sendmsg" }, |
| + { .name = "recvmsg" }, |
| + { .name = "semop" }, |
| + { .name = "semget" }, |
| +/* 300 */ { .name = "semctl" }, |
| + { .name = "msgsnd" }, |
| + { .name = "msgrcv" }, |
| + { .name = "msgget" }, |
| + { .name = "msgctl" }, |
| +/* 305 */ { .name = "shmat" }, |
| + { .name = "shmdt" }, |
| + { .name = "shmget" }, |
| + { .name = "shmctl" }, |
| + { .name = "add_key" }, |
| +/* 310 */ { .name = "request_key" }, |
| + { .name = "keyctl" }, |
| + { .name = "semtimedop", }, |
| +/* vserver */ { .name = "ni_syscall" }, |
| + { .name = "ioprio_set" }, |
| +/* 315 */ { .name = "ioprio_get" }, |
| + { .name = "inotify_init" }, |
| + { .name = "inotify_add_watch" }, |
| + { .name = "inotify_rm_watch" }, |
| + { .name = "mbind" }, |
| +/* 320 */ { .name = "get_mempolicy" }, |
| + { .name = "set_mempolicy" }, |
| + { .name = "openat" }, |
| + { .name = "mkdirat" }, |
| + { .name = "mknodat" }, |
| +/* 325 */ { .name = "fchownat" }, |
| + { .name = "futimesat" }, |
| + { .name = "fstatat64" }, |
| + { .name = "unlinkat" }, |
| + { .name = "renameat" }, |
| +/* 330 */ { .name = "linkat" }, |
| + { .name = "symlinkat" }, |
| + { .name = "readlinkat" }, |
| + { .name = "fchmodat" }, |
| + { .name = "faccessat" }, |
| +/* 335 */ { .name = "pselect6" }, |
| + { .name = "ppoll" }, |
| + { .name = "unshare" }, |
| + { .name = "set_robust_list", .sanitise = sanitise_set_robust_list }, |
| + { .name = "get_robust_list" }, |
| +/* 340 */ { .name = "splice", .sanitise = sanitise_splice }, |
| + { .name = "sync_file_range2", .sanitise = sanitise_sync_file_range }, |
| + { .name = "tee", .sanitise = sanitise_tee }, |
| + { .name = "vmsplice", .sanitise = sanitise_vmsplice }, |
| + { .name = "move_pages" }, |
| +/* 345 */ { .name = "getcpu" }, |
| + { .name = "epoll_pwait" }, |
| + { .name = "kexec_load" }, |
| + { .name = "utimensat" }, |
| + { .name = "signalfd" }, |
| +/* 350 */ { .name = "timerfd_create" }, |
| + { .name = "eventfd" }, |
| + { .name = "fallocate" }, |
| + { .name = "timerfd_settime" }, |
| + { .name = "timerfd_gettime" }, |
| +/* 355 */ { .name = "signalfd4" }, |
| + { .name = "eventfd2" }, |
| + { .name = "epoll_create1" }, |
| + { .name = "dup3" }, |
| + { .name = "pipe2" }, |
| +/* 360 */ { .name = "inotify_init1" }, |
| + { .name = "preadv" }, |
| + { .name = "pwritev" }, |
| + { .name = "rt_tgsigqueueinfo" }, |
| + { .name = "perf_event_open" }, |
| +}; |