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" }, +};