454 lines
15 KiB
Diff
454 lines
15 KiB
Diff
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" },
|
|
+};
|