Loading debuggerd/crasher/crasher.cpp +40 −32 Original line number Diff line number Diff line Loading @@ -183,6 +183,8 @@ static int usage() { fprintf(stderr, " exit call exit(1)\n"); fprintf(stderr, "\n"); fprintf(stderr, " fortify fail a _FORTIFY_SOURCE check\n"); fprintf(stderr, " fdsan_file close a file descriptor that's owned by a FILE*\n"); fprintf(stderr, " fdsan_dir close a file descriptor that's owned by a DIR*\n"); fprintf(stderr, " seccomp fail a seccomp check\n"); #if defined(__arm__) fprintf(stderr, " kuser_helper_version call kuser_helper_version\n"); Loading Loading @@ -260,6 +262,12 @@ noinline int do_action(const char* arg) { char buf[10]; __read_chk(-1, buf, 32, 10); while (true) pause(); } else if (!strcasecmp(arg, "fdsan_file")) { FILE* f = fopen("/dev/null", "r"); close(fileno(f)); } else if (!strcasecmp(arg, "fdsan_dir")) { DIR* d = opendir("/dev/"); close(dirfd(d)); } else if (!strcasecmp(arg, "LOG(FATAL)")) { LOG(FATAL) << "hello " << 123; } else if (!strcasecmp(arg, "LOG_ALWAYS_FATAL")) { Loading Loading @@ -295,8 +303,8 @@ noinline int do_action(const char* arg) { } else if (!strcasecmp(arg, "leak")) { leak(); } else if (!strcasecmp(arg, "SIGSEGV-unmapped")) { char* map = reinterpret_cast<char*>(mmap(nullptr, sizeof(int), PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0)); char* map = reinterpret_cast<char*>( mmap(nullptr, sizeof(int), PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0)); munmap(map, sizeof(int)); map[0] = '8'; } else if (!strcasecmp(arg, "seccomp")) { Loading Loading
debuggerd/crasher/crasher.cpp +40 −32 Original line number Diff line number Diff line Loading @@ -183,6 +183,8 @@ static int usage() { fprintf(stderr, " exit call exit(1)\n"); fprintf(stderr, "\n"); fprintf(stderr, " fortify fail a _FORTIFY_SOURCE check\n"); fprintf(stderr, " fdsan_file close a file descriptor that's owned by a FILE*\n"); fprintf(stderr, " fdsan_dir close a file descriptor that's owned by a DIR*\n"); fprintf(stderr, " seccomp fail a seccomp check\n"); #if defined(__arm__) fprintf(stderr, " kuser_helper_version call kuser_helper_version\n"); Loading Loading @@ -260,6 +262,12 @@ noinline int do_action(const char* arg) { char buf[10]; __read_chk(-1, buf, 32, 10); while (true) pause(); } else if (!strcasecmp(arg, "fdsan_file")) { FILE* f = fopen("/dev/null", "r"); close(fileno(f)); } else if (!strcasecmp(arg, "fdsan_dir")) { DIR* d = opendir("/dev/"); close(dirfd(d)); } else if (!strcasecmp(arg, "LOG(FATAL)")) { LOG(FATAL) << "hello " << 123; } else if (!strcasecmp(arg, "LOG_ALWAYS_FATAL")) { Loading Loading @@ -295,8 +303,8 @@ noinline int do_action(const char* arg) { } else if (!strcasecmp(arg, "leak")) { leak(); } else if (!strcasecmp(arg, "SIGSEGV-unmapped")) { char* map = reinterpret_cast<char*>(mmap(nullptr, sizeof(int), PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0)); char* map = reinterpret_cast<char*>( mmap(nullptr, sizeof(int), PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0)); munmap(map, sizeof(int)); map[0] = '8'; } else if (!strcasecmp(arg, "seccomp")) { Loading