// https://syzkaller.appspot.com/bug?id=5b9d1e3232dc19d61832a76821bc5fc9b914b4cd // autogenerated by syzkaller (http://github.com/google/syzkaller) #define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include #include #include #include #include __attribute__((noreturn)) static void doexit(int status) { volatile unsigned i; syscall(__NR_exit_group, status); for (i = 0;; i++) { } } #include #include const int kFailStatus = 67; const int kRetryStatus = 69; static void fail(const char* msg, ...) { int e = errno; va_list args; va_start(args, msg); vfprintf(stderr, msg, args); va_end(args); fprintf(stderr, " (errno %d)\n", e); doexit((e == ENOMEM || e == EAGAIN) ? kRetryStatus : kFailStatus); } static uint64_t current_time_ms() { struct timespec ts; if (clock_gettime(CLOCK_MONOTONIC, &ts)) fail("clock_gettime failed"); return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000; } #define XT_TABLE_SIZE 1536 #define XT_MAX_ENTRIES 10 struct xt_counters { uint64_t pcnt, bcnt; }; struct ipt_getinfo { char name[32]; unsigned int valid_hooks; unsigned int hook_entry[5]; unsigned int underflow[5]; unsigned int num_entries; unsigned int size; }; struct ipt_get_entries { char name[32]; unsigned int size; void* entrytable[XT_TABLE_SIZE / sizeof(void*)]; }; struct ipt_replace { char name[32]; unsigned int valid_hooks; unsigned int num_entries; unsigned int size; unsigned int hook_entry[5]; unsigned int underflow[5]; unsigned int num_counters; struct xt_counters* counters; char entrytable[XT_TABLE_SIZE]; }; struct ipt_table_desc { const char* name; struct ipt_getinfo info; struct ipt_replace replace; }; static struct ipt_table_desc ipv4_tables[] = { {.name = "filter"}, {.name = "nat"}, {.name = "mangle"}, {.name = "raw"}, {.name = "security"}, }; static struct ipt_table_desc ipv6_tables[] = { {.name = "filter"}, {.name = "nat"}, {.name = "mangle"}, {.name = "raw"}, {.name = "security"}, }; #define IPT_BASE_CTL 64 #define IPT_SO_SET_REPLACE (IPT_BASE_CTL) #define IPT_SO_GET_INFO (IPT_BASE_CTL) #define IPT_SO_GET_ENTRIES (IPT_BASE_CTL + 1) struct arpt_getinfo { char name[32]; unsigned int valid_hooks; unsigned int hook_entry[3]; unsigned int underflow[3]; unsigned int num_entries; unsigned int size; }; struct arpt_get_entries { char name[32]; unsigned int size; void* entrytable[XT_TABLE_SIZE / sizeof(void*)]; }; struct arpt_replace { char name[32]; unsigned int valid_hooks; unsigned int num_entries; unsigned int size; unsigned int hook_entry[3]; unsigned int underflow[3]; unsigned int num_counters; struct xt_counters* counters; char entrytable[XT_TABLE_SIZE]; }; struct arpt_table_desc { const char* name; struct arpt_getinfo info; struct arpt_replace replace; }; static struct arpt_table_desc arpt_tables[] = { {.name = "filter"}, }; #define ARPT_BASE_CTL 96 #define ARPT_SO_SET_REPLACE (ARPT_BASE_CTL) #define ARPT_SO_GET_INFO (ARPT_BASE_CTL) #define ARPT_SO_GET_ENTRIES (ARPT_BASE_CTL + 1) static void checkpoint_iptables(struct ipt_table_desc* tables, int num_tables, int family, int level) { struct ipt_get_entries entries; socklen_t optlen; int fd, i; fd = socket(family, SOCK_STREAM, IPPROTO_TCP); if (fd == -1) fail("socket(%d, SOCK_STREAM, IPPROTO_TCP)", family); for (i = 0; i < num_tables; i++) { struct ipt_table_desc* table = &tables[i]; strcpy(table->info.name, table->name); strcpy(table->replace.name, table->name); optlen = sizeof(table->info); if (getsockopt(fd, level, IPT_SO_GET_INFO, &table->info, &optlen)) { switch (errno) { case EPERM: case ENOENT: case ENOPROTOOPT: continue; } fail("getsockopt(IPT_SO_GET_INFO)"); } if (table->info.size > sizeof(table->replace.entrytable)) fail("table size is too large: %u", table->info.size); if (table->info.num_entries > XT_MAX_ENTRIES) fail("too many counters: %u", table->info.num_entries); memset(&entries, 0, sizeof(entries)); strcpy(entries.name, table->name); entries.size = table->info.size; optlen = sizeof(entries) - sizeof(entries.entrytable) + table->info.size; if (getsockopt(fd, level, IPT_SO_GET_ENTRIES, &entries, &optlen)) fail("getsockopt(IPT_SO_GET_ENTRIES)"); table->replace.valid_hooks = table->info.valid_hooks; table->replace.num_entries = table->info.num_entries; table->replace.size = table->info.size; memcpy(table->replace.hook_entry, table->info.hook_entry, sizeof(table->replace.hook_entry)); memcpy(table->replace.underflow, table->info.underflow, sizeof(table->replace.underflow)); memcpy(table->replace.entrytable, entries.entrytable, table->info.size); } close(fd); } static void reset_iptables(struct ipt_table_desc* tables, int num_tables, int family, int level) { struct xt_counters counters[XT_MAX_ENTRIES]; struct ipt_get_entries entries; struct ipt_getinfo info; socklen_t optlen; int fd, i; fd = socket(family, SOCK_STREAM, IPPROTO_TCP); if (fd == -1) fail("socket(%d, SOCK_STREAM, IPPROTO_TCP)", family); for (i = 0; i < num_tables; i++) { struct ipt_table_desc* table = &tables[i]; if (table->info.valid_hooks == 0) continue; memset(&info, 0, sizeof(info)); strcpy(info.name, table->name); optlen = sizeof(info); if (getsockopt(fd, level, IPT_SO_GET_INFO, &info, &optlen)) fail("getsockopt(IPT_SO_GET_INFO)"); if (memcmp(&table->info, &info, sizeof(table->info)) == 0) { memset(&entries, 0, sizeof(entries)); strcpy(entries.name, table->name); entries.size = table->info.size; optlen = sizeof(entries) - sizeof(entries.entrytable) + entries.size; if (getsockopt(fd, level, IPT_SO_GET_ENTRIES, &entries, &optlen)) fail("getsockopt(IPT_SO_GET_ENTRIES)"); if (memcmp(table->replace.entrytable, entries.entrytable, table->info.size) == 0) continue; } table->replace.num_counters = info.num_entries; table->replace.counters = counters; optlen = sizeof(table->replace) - sizeof(table->replace.entrytable) + table->replace.size; if (setsockopt(fd, level, IPT_SO_SET_REPLACE, &table->replace, optlen)) fail("setsockopt(IPT_SO_SET_REPLACE)"); } close(fd); } static void checkpoint_arptables(void) { struct arpt_get_entries entries; socklen_t optlen; unsigned i; int fd; fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (fd == -1) fail("socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)"); for (i = 0; i < sizeof(arpt_tables) / sizeof(arpt_tables[0]); i++) { struct arpt_table_desc* table = &arpt_tables[i]; strcpy(table->info.name, table->name); strcpy(table->replace.name, table->name); optlen = sizeof(table->info); if (getsockopt(fd, SOL_IP, ARPT_SO_GET_INFO, &table->info, &optlen)) { switch (errno) { case EPERM: case ENOENT: case ENOPROTOOPT: continue; } fail("getsockopt(ARPT_SO_GET_INFO)"); } if (table->info.size > sizeof(table->replace.entrytable)) fail("table size is too large: %u", table->info.size); if (table->info.num_entries > XT_MAX_ENTRIES) fail("too many counters: %u", table->info.num_entries); memset(&entries, 0, sizeof(entries)); strcpy(entries.name, table->name); entries.size = table->info.size; optlen = sizeof(entries) - sizeof(entries.entrytable) + table->info.size; if (getsockopt(fd, SOL_IP, ARPT_SO_GET_ENTRIES, &entries, &optlen)) fail("getsockopt(ARPT_SO_GET_ENTRIES)"); table->replace.valid_hooks = table->info.valid_hooks; table->replace.num_entries = table->info.num_entries; table->replace.size = table->info.size; memcpy(table->replace.hook_entry, table->info.hook_entry, sizeof(table->replace.hook_entry)); memcpy(table->replace.underflow, table->info.underflow, sizeof(table->replace.underflow)); memcpy(table->replace.entrytable, entries.entrytable, table->info.size); } close(fd); } static void reset_arptables() { struct xt_counters counters[XT_MAX_ENTRIES]; struct arpt_get_entries entries; struct arpt_getinfo info; socklen_t optlen; unsigned i; int fd; fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (fd == -1) fail("socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)"); for (i = 0; i < sizeof(arpt_tables) / sizeof(arpt_tables[0]); i++) { struct arpt_table_desc* table = &arpt_tables[i]; if (table->info.valid_hooks == 0) continue; memset(&info, 0, sizeof(info)); strcpy(info.name, table->name); optlen = sizeof(info); if (getsockopt(fd, SOL_IP, ARPT_SO_GET_INFO, &info, &optlen)) fail("getsockopt(ARPT_SO_GET_INFO)"); if (memcmp(&table->info, &info, sizeof(table->info)) == 0) { memset(&entries, 0, sizeof(entries)); strcpy(entries.name, table->name); entries.size = table->info.size; optlen = sizeof(entries) - sizeof(entries.entrytable) + entries.size; if (getsockopt(fd, SOL_IP, ARPT_SO_GET_ENTRIES, &entries, &optlen)) fail("getsockopt(ARPT_SO_GET_ENTRIES)"); if (memcmp(table->replace.entrytable, entries.entrytable, table->info.size) == 0) continue; } table->replace.num_counters = info.num_entries; table->replace.counters = counters; optlen = sizeof(table->replace) - sizeof(table->replace.entrytable) + table->replace.size; if (setsockopt(fd, SOL_IP, ARPT_SO_SET_REPLACE, &table->replace, optlen)) fail("setsockopt(ARPT_SO_SET_REPLACE)"); } close(fd); } static void checkpoint_net_namespace(void) { checkpoint_arptables(); checkpoint_iptables(ipv4_tables, sizeof(ipv4_tables) / sizeof(ipv4_tables[0]), AF_INET, SOL_IP); checkpoint_iptables(ipv6_tables, sizeof(ipv6_tables) / sizeof(ipv6_tables[0]), AF_INET6, SOL_IPV6); } static void reset_net_namespace(void) { reset_arptables(); reset_iptables(ipv4_tables, sizeof(ipv4_tables) / sizeof(ipv4_tables[0]), AF_INET, SOL_IP); reset_iptables(ipv6_tables, sizeof(ipv6_tables) / sizeof(ipv6_tables[0]), AF_INET6, SOL_IPV6); } static void test(); void loop() { int iter; checkpoint_net_namespace(); for (iter = 0;; iter++) { int pid = fork(); if (pid < 0) fail("loop fork failed"); if (pid == 0) { prctl(PR_SET_PDEATHSIG, SIGKILL, 0, 0, 0); setpgrp(); test(); doexit(0); } int status = 0; uint64_t start = current_time_ms(); for (;;) { int res = waitpid(-1, &status, __WALL | WNOHANG); if (res == pid) break; usleep(1000); if (current_time_ms() - start > 5 * 1000) { kill(-pid, SIGKILL); kill(pid, SIGKILL); while (waitpid(-1, &status, __WALL) != pid) { } break; } } reset_net_namespace(); } } long r[2]; void test() { memset(r, -1, sizeof(r)); syscall(__NR_mmap, 0x20000000, 0xfff000, 3, 0x32, -1, 0); r[0] = syscall(__NR_socket, 0xa, 0x80001, 0); *(uint32_t*)0x20fca000 = 0; *(uint16_t*)0x20fca008 = 0xa; *(uint16_t*)0x20fca00a = 0; *(uint32_t*)0x20fca00c = 0; *(uint8_t*)0x20fca010 = -1; *(uint8_t*)0x20fca011 = 1; *(uint8_t*)0x20fca012 = 0; *(uint8_t*)0x20fca013 = 0; *(uint8_t*)0x20fca014 = 0; *(uint8_t*)0x20fca015 = 0; *(uint8_t*)0x20fca016 = 0; *(uint8_t*)0x20fca017 = 0; *(uint8_t*)0x20fca018 = 0; *(uint8_t*)0x20fca019 = 0; *(uint8_t*)0x20fca01a = 0; *(uint8_t*)0x20fca01b = 0; *(uint8_t*)0x20fca01c = 0; *(uint8_t*)0x20fca01d = 0; *(uint8_t*)0x20fca01e = 0; *(uint8_t*)0x20fca01f = 1; *(uint32_t*)0x20fca020 = 0; *(uint64_t*)0x20fca028 = 0; *(uint64_t*)0x20fca030 = 0; *(uint64_t*)0x20fca038 = 0; *(uint64_t*)0x20fca040 = 0; *(uint64_t*)0x20fca048 = 0; *(uint64_t*)0x20fca050 = 0; *(uint64_t*)0x20fca058 = 0; *(uint64_t*)0x20fca060 = 0; *(uint64_t*)0x20fca068 = 0; *(uint64_t*)0x20fca070 = 0; *(uint64_t*)0x20fca078 = 0; *(uint64_t*)0x20fca080 = 0; syscall(__NR_setsockopt, r[0], 0x29, 0x2a, 0x20fca000, 0x88); r[1] = syscall(__NR_socket, 0xa, 2, 0); memcpy((void*)0x20ff3b88, "\x73\x65\x63\x75\x72\x69\x74\x79\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00", 32); *(uint32_t*)0x20ff3ba8 = 0xe; *(uint32_t*)0x20ff3bac = 4; *(uint32_t*)0x20ff3bb0 = 0x418; *(uint32_t*)0x20ff3bb4 = -1; *(uint32_t*)0x20ff3bb8 = 0x100; *(uint32_t*)0x20ff3bbc = 0x208; *(uint32_t*)0x20ff3bc0 = 0; *(uint32_t*)0x20ff3bc4 = -1; *(uint32_t*)0x20ff3bc8 = -1; *(uint32_t*)0x20ff3bcc = 0x348; *(uint32_t*)0x20ff3bd0 = 0x348; *(uint32_t*)0x20ff3bd4 = 0x348; *(uint32_t*)0x20ff3bd8 = -1; *(uint32_t*)0x20ff3bdc = 4; *(uint64_t*)0x20ff3be0 = 0x20aca000; *(uint8_t*)0x20ff3be8 = -1; *(uint8_t*)0x20ff3be9 = 1; *(uint8_t*)0x20ff3bea = 0; *(uint8_t*)0x20ff3beb = 0; *(uint8_t*)0x20ff3bec = 0; *(uint8_t*)0x20ff3bed = 0; *(uint8_t*)0x20ff3bee = 0; *(uint8_t*)0x20ff3bef = 0; *(uint8_t*)0x20ff3bf0 = 0; *(uint8_t*)0x20ff3bf1 = 0; *(uint8_t*)0x20ff3bf2 = 0; *(uint8_t*)0x20ff3bf3 = 0; *(uint8_t*)0x20ff3bf4 = 0; *(uint8_t*)0x20ff3bf5 = 0; *(uint8_t*)0x20ff3bf6 = 0; *(uint8_t*)0x20ff3bf7 = 1; *(uint8_t*)0x20ff3bf8 = -1; *(uint8_t*)0x20ff3bf9 = 1; *(uint8_t*)0x20ff3bfa = 0; *(uint8_t*)0x20ff3bfb = 0; *(uint8_t*)0x20ff3bfc = 0; *(uint8_t*)0x20ff3bfd = 0; *(uint8_t*)0x20ff3bfe = 0; *(uint8_t*)0x20ff3bff = 0; *(uint8_t*)0x20ff3c00 = 0; *(uint8_t*)0x20ff3c01 = 0; *(uint8_t*)0x20ff3c02 = 0; *(uint8_t*)0x20ff3c03 = 0; *(uint8_t*)0x20ff3c04 = 0; *(uint8_t*)0x20ff3c05 = 0; *(uint8_t*)0x20ff3c06 = 0; *(uint8_t*)0x20ff3c07 = 1; *(uint32_t*)0x20ff3c08 = htobe32(0); *(uint32_t*)0x20ff3c0c = htobe32(0); *(uint32_t*)0x20ff3c10 = htobe32(0); *(uint32_t*)0x20ff3c14 = htobe32(0); *(uint32_t*)0x20ff3c18 = htobe32(0); *(uint32_t*)0x20ff3c1c = htobe32(0); *(uint32_t*)0x20ff3c20 = htobe32(0); *(uint32_t*)0x20ff3c24 = htobe32(0); memcpy((void*)0x20ff3c28, "\x69\x70\x5f\x76\x74\x69\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00", 16); memcpy((void*)0x20ff3c38, "\x65\x72\x73\x70\x61\x6e\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00", 16); *(uint8_t*)0x20ff3c48 = 0; *(uint8_t*)0x20ff3c49 = 0; *(uint8_t*)0x20ff3c4a = 0; *(uint8_t*)0x20ff3c4b = 0; *(uint8_t*)0x20ff3c4c = 0; *(uint8_t*)0x20ff3c4d = 0; *(uint8_t*)0x20ff3c4e = 0; *(uint8_t*)0x20ff3c4f = 0; *(uint8_t*)0x20ff3c50 = 0; *(uint8_t*)0x20ff3c51 = 0; *(uint8_t*)0x20ff3c52 = 0; *(uint8_t*)0x20ff3c53 = 0; *(uint8_t*)0x20ff3c54 = 0; *(uint8_t*)0x20ff3c55 = 0; *(uint8_t*)0x20ff3c56 = 0; *(uint8_t*)0x20ff3c57 = 0; *(uint8_t*)0x20ff3c58 = 0; *(uint8_t*)0x20ff3c59 = 0; *(uint8_t*)0x20ff3c5a = 0; *(uint8_t*)0x20ff3c5b = 0; *(uint8_t*)0x20ff3c5c = 0; *(uint8_t*)0x20ff3c5d = 0; *(uint8_t*)0x20ff3c5e = 0; *(uint8_t*)0x20ff3c5f = 0; *(uint8_t*)0x20ff3c60 = 0; *(uint8_t*)0x20ff3c61 = 0; *(uint8_t*)0x20ff3c62 = 0; *(uint8_t*)0x20ff3c63 = 0; *(uint8_t*)0x20ff3c64 = 0; *(uint8_t*)0x20ff3c65 = 0; *(uint8_t*)0x20ff3c66 = 0; *(uint8_t*)0x20ff3c67 = 0; *(uint16_t*)0x20ff3c68 = 0; *(uint8_t*)0x20ff3c6a = 0; *(uint8_t*)0x20ff3c6b = 0; *(uint8_t*)0x20ff3c6c = 0; *(uint32_t*)0x20ff3c70 = 0; *(uint16_t*)0x20ff3c74 = 0xd8; *(uint16_t*)0x20ff3c76 = 0x100; *(uint32_t*)0x20ff3c78 = 0; *(uint64_t*)0x20ff3c80 = 0; *(uint64_t*)0x20ff3c88 = 0; *(uint16_t*)0x20ff3c90 = 0x30; memcpy((void*)0x20ff3c92, "\x66\x72\x61\x67\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00", 29); *(uint8_t*)0x20ff3caf = 0; *(uint32_t*)0x20ff3cb0 = 0; *(uint32_t*)0x20ff3cb4 = 0; *(uint32_t*)0x20ff3cb8 = 0; *(uint8_t*)0x20ff3cbc = 0; *(uint8_t*)0x20ff3cbd = 0; *(uint16_t*)0x20ff3cc0 = 0x28; memcpy((void*)0x20ff3cc2, "\x4e\x46\x51\x55\x45\x55\x45\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00", 29); *(uint8_t*)0x20ff3cdf = 3; *(uint16_t*)0x20ff3ce0 = 0; *(uint16_t*)0x20ff3ce2 = 8; *(uint16_t*)0x20ff3ce4 = 0; *(uint8_t*)0x20ff3ce8 = 0; *(uint8_t*)0x20ff3ce9 = 0; *(uint8_t*)0x20ff3cea = 0; *(uint8_t*)0x20ff3ceb = 0; *(uint8_t*)0x20ff3cec = 0; *(uint8_t*)0x20ff3ced = 0; *(uint8_t*)0x20ff3cee = 0; *(uint8_t*)0x20ff3cef = 0; *(uint8_t*)0x20ff3cf0 = 0; *(uint8_t*)0x20ff3cf1 = 0; *(uint8_t*)0x20ff3cf2 = -1; *(uint8_t*)0x20ff3cf3 = -1; *(uint32_t*)0x20ff3cf4 = htobe32(0xe0000001); *(uint8_t*)0x20ff3cf8 = 0; *(uint8_t*)0x20ff3cf9 = 0; *(uint8_t*)0x20ff3cfa = 0; *(uint8_t*)0x20ff3cfb = 0; *(uint8_t*)0x20ff3cfc = 0; *(uint8_t*)0x20ff3cfd = 0; *(uint8_t*)0x20ff3cfe = 0; *(uint8_t*)0x20ff3cff = 0; *(uint8_t*)0x20ff3d00 = 0; *(uint8_t*)0x20ff3d01 = 0; *(uint8_t*)0x20ff3d02 = 0; *(uint8_t*)0x20ff3d03 = 0; *(uint8_t*)0x20ff3d04 = 0; *(uint8_t*)0x20ff3d05 = 0; *(uint8_t*)0x20ff3d06 = 0; *(uint8_t*)0x20ff3d07 = 0; *(uint32_t*)0x20ff3d08 = htobe32(0); *(uint32_t*)0x20ff3d0c = htobe32(0); *(uint32_t*)0x20ff3d10 = htobe32(0); *(uint32_t*)0x20ff3d14 = htobe32(0); *(uint32_t*)0x20ff3d18 = htobe32(0); *(uint32_t*)0x20ff3d1c = htobe32(0); *(uint32_t*)0x20ff3d20 = htobe32(0); *(uint32_t*)0x20ff3d24 = htobe32(0); memcpy((void*)0x20ff3d28, "\x81\x18\xd6\x73\x55\xe5\x5d\xe9\xc0\xbf\xb9\x1f\xb2\xf2\x8e\xe1", 16); memcpy((void*)0x20ff3d38, "\xc1\x7c\x22\x2b\x26\x24\x28\x50\xad\x11\x5e\x6b\x14\xd5\xed\x5a", 16); *(uint8_t*)0x20ff3d48 = 0; *(uint8_t*)0x20ff3d49 = 0; *(uint8_t*)0x20ff3d4a = 0; *(uint8_t*)0x20ff3d4b = 0; *(uint8_t*)0x20ff3d4c = 0; *(uint8_t*)0x20ff3d4d = 0; *(uint8_t*)0x20ff3d4e = 0; *(uint8_t*)0x20ff3d4f = 0; *(uint8_t*)0x20ff3d50 = 0; *(uint8_t*)0x20ff3d51 = 0; *(uint8_t*)0x20ff3d52 = 0; *(uint8_t*)0x20ff3d53 = 0; *(uint8_t*)0x20ff3d54 = 0; *(uint8_t*)0x20ff3d55 = 0; *(uint8_t*)0x20ff3d56 = 0; *(uint8_t*)0x20ff3d57 = 0; *(uint8_t*)0x20ff3d58 = 0; *(uint8_t*)0x20ff3d59 = 0; *(uint8_t*)0x20ff3d5a = 0; *(uint8_t*)0x20ff3d5b = 0; *(uint8_t*)0x20ff3d5c = 0; *(uint8_t*)0x20ff3d5d = 0; *(uint8_t*)0x20ff3d5e = 0; *(uint8_t*)0x20ff3d5f = 0; *(uint8_t*)0x20ff3d60 = 0; *(uint8_t*)0x20ff3d61 = 0; *(uint8_t*)0x20ff3d62 = 0; *(uint8_t*)0x20ff3d63 = 0; *(uint8_t*)0x20ff3d64 = 0; *(uint8_t*)0x20ff3d65 = 0; *(uint8_t*)0x20ff3d66 = 0; *(uint8_t*)0x20ff3d67 = 0; *(uint16_t*)0x20ff3d68 = 0; *(uint8_t*)0x20ff3d6a = 0; *(uint8_t*)0x20ff3d6b = 0; *(uint8_t*)0x20ff3d6c = 0; *(uint32_t*)0x20ff3d70 = 0; *(uint16_t*)0x20ff3d74 = 0xe0; *(uint16_t*)0x20ff3d76 = 0x108; *(uint32_t*)0x20ff3d78 = 0; *(uint64_t*)0x20ff3d80 = 0; *(uint64_t*)0x20ff3d88 = 0; *(uint16_t*)0x20ff3d90 = 0x38; memcpy((void*)0x20ff3d92, "\x63\x6f\x6e\x6e\x62\x79\x74\x65\x73\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00", 29); *(uint8_t*)0x20ff3daf = 0; *(uint64_t*)0x20ff3db0 = 0; *(uint64_t*)0x20ff3db8 = 0; *(uint8_t*)0x20ff3dc0 = 0; *(uint8_t*)0x20ff3dc1 = 0; *(uint16_t*)0x20ff3dc8 = 0x28; memcpy((void*)0x20ff3dca, "\x41\x55\x44\x49\x54\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00", 29); *(uint8_t*)0x20ff3de7 = 0; *(uint8_t*)0x20ff3de8 = 0; *(uint8_t*)0x20ff3df0 = 0; *(uint8_t*)0x20ff3df1 = 0; *(uint8_t*)0x20ff3df2 = 0; *(uint8_t*)0x20ff3df3 = 0; *(uint8_t*)0x20ff3df4 = 0; *(uint8_t*)0x20ff3df5 = 0; *(uint8_t*)0x20ff3df6 = 0; *(uint8_t*)0x20ff3df7 = 0; *(uint8_t*)0x20ff3df8 = 0; *(uint8_t*)0x20ff3df9 = 0; *(uint8_t*)0x20ff3dfa = 0; *(uint8_t*)0x20ff3dfb = 0; *(uint8_t*)0x20ff3dfc = 0; *(uint8_t*)0x20ff3dfd = 0; *(uint8_t*)0x20ff3dfe = 0; *(uint8_t*)0x20ff3dff = 0; *(uint8_t*)0x20ff3e00 = 0; *(uint8_t*)0x20ff3e01 = 0; *(uint8_t*)0x20ff3e02 = 0; *(uint8_t*)0x20ff3e03 = 0; *(uint8_t*)0x20ff3e04 = 0; *(uint8_t*)0x20ff3e05 = 0; *(uint8_t*)0x20ff3e06 = 0; *(uint8_t*)0x20ff3e07 = 0; *(uint8_t*)0x20ff3e08 = 0; *(uint8_t*)0x20ff3e09 = 0; *(uint8_t*)0x20ff3e0a = 0; *(uint8_t*)0x20ff3e0b = 0; *(uint8_t*)0x20ff3e0c = 0; *(uint8_t*)0x20ff3e0d = 0; *(uint8_t*)0x20ff3e0e = 0; *(uint8_t*)0x20ff3e0f = 0; *(uint8_t*)0x20ff3e10 = 0; *(uint8_t*)0x20ff3e11 = 0; *(uint8_t*)0x20ff3e12 = 0; *(uint8_t*)0x20ff3e13 = 0; *(uint8_t*)0x20ff3e14 = 0; *(uint8_t*)0x20ff3e15 = 0; *(uint8_t*)0x20ff3e16 = 0; *(uint8_t*)0x20ff3e17 = 0; *(uint8_t*)0x20ff3e18 = 0; *(uint8_t*)0x20ff3e19 = 0; *(uint8_t*)0x20ff3e1a = 0; *(uint8_t*)0x20ff3e1b = 0; *(uint8_t*)0x20ff3e1c = 0; *(uint8_t*)0x20ff3e1d = 0; *(uint8_t*)0x20ff3e1e = 0; *(uint8_t*)0x20ff3e1f = 0; *(uint8_t*)0x20ff3e20 = 0; *(uint8_t*)0x20ff3e21 = 0; *(uint8_t*)0x20ff3e22 = 0; *(uint8_t*)0x20ff3e23 = 0; *(uint8_t*)0x20ff3e24 = 0; *(uint8_t*)0x20ff3e25 = 0; *(uint8_t*)0x20ff3e26 = 0; *(uint8_t*)0x20ff3e27 = 0; *(uint8_t*)0x20ff3e28 = 0; *(uint8_t*)0x20ff3e29 = 0; *(uint8_t*)0x20ff3e2a = 0; *(uint8_t*)0x20ff3e2b = 0; *(uint8_t*)0x20ff3e2c = 0; *(uint8_t*)0x20ff3e2d = 0; *(uint8_t*)0x20ff3e2e = 0; *(uint8_t*)0x20ff3e2f = 0; *(uint8_t*)0x20ff3e30 = 0; *(uint8_t*)0x20ff3e31 = 0; *(uint8_t*)0x20ff3e32 = 0; *(uint8_t*)0x20ff3e33 = 0; *(uint8_t*)0x20ff3e34 = 0; *(uint8_t*)0x20ff3e35 = 0; *(uint8_t*)0x20ff3e36 = 0; *(uint8_t*)0x20ff3e37 = 0; *(uint8_t*)0x20ff3e38 = 0; *(uint8_t*)0x20ff3e39 = 0; *(uint8_t*)0x20ff3e3a = 0; *(uint8_t*)0x20ff3e3b = 0; *(uint8_t*)0x20ff3e3c = 0; *(uint8_t*)0x20ff3e3d = 0; *(uint8_t*)0x20ff3e3e = 0; *(uint8_t*)0x20ff3e3f = 0; *(uint8_t*)0x20ff3e40 = 0; *(uint8_t*)0x20ff3e41 = 0; *(uint8_t*)0x20ff3e42 = 0; *(uint8_t*)0x20ff3e43 = 0; *(uint8_t*)0x20ff3e44 = 0; *(uint8_t*)0x20ff3e45 = 0; *(uint8_t*)0x20ff3e46 = 0; *(uint8_t*)0x20ff3e47 = 0; *(uint8_t*)0x20ff3e48 = 0; *(uint8_t*)0x20ff3e49 = 0; *(uint8_t*)0x20ff3e4a = 0; *(uint8_t*)0x20ff3e4b = 0; *(uint8_t*)0x20ff3e4c = 0; *(uint8_t*)0x20ff3e4d = 0; *(uint8_t*)0x20ff3e4e = 0; *(uint8_t*)0x20ff3e4f = 0; *(uint8_t*)0x20ff3e50 = 0; *(uint8_t*)0x20ff3e51 = 0; *(uint8_t*)0x20ff3e52 = 0; *(uint8_t*)0x20ff3e53 = 0; *(uint8_t*)0x20ff3e54 = 0; *(uint8_t*)0x20ff3e55 = 0; *(uint8_t*)0x20ff3e56 = 0; *(uint8_t*)0x20ff3e57 = 0; *(uint8_t*)0x20ff3e58 = 0; *(uint8_t*)0x20ff3e59 = 0; *(uint8_t*)0x20ff3e5a = 0; *(uint8_t*)0x20ff3e5b = 0; *(uint8_t*)0x20ff3e5c = 0; *(uint8_t*)0x20ff3e5d = 0; *(uint8_t*)0x20ff3e5e = 0; *(uint8_t*)0x20ff3e5f = 0; *(uint8_t*)0x20ff3e60 = 0; *(uint8_t*)0x20ff3e61 = 0; *(uint8_t*)0x20ff3e62 = 0; *(uint8_t*)0x20ff3e63 = 0; *(uint8_t*)0x20ff3e64 = 0; *(uint8_t*)0x20ff3e65 = 0; *(uint8_t*)0x20ff3e66 = 0; *(uint8_t*)0x20ff3e67 = 0; *(uint8_t*)0x20ff3e68 = 0; *(uint8_t*)0x20ff3e69 = 0; *(uint8_t*)0x20ff3e6a = 0; *(uint8_t*)0x20ff3e6b = 0; *(uint8_t*)0x20ff3e6c = 0; *(uint8_t*)0x20ff3e6d = 0; *(uint8_t*)0x20ff3e6e = 0; *(uint8_t*)0x20ff3e6f = 0; *(uint8_t*)0x20ff3e70 = 0; *(uint8_t*)0x20ff3e71 = 0; *(uint8_t*)0x20ff3e72 = 0; *(uint8_t*)0x20ff3e73 = 0; *(uint8_t*)0x20ff3e74 = 0; *(uint8_t*)0x20ff3e75 = 0; *(uint8_t*)0x20ff3e76 = 0; *(uint8_t*)0x20ff3e77 = 0; *(uint32_t*)0x20ff3e78 = 0; *(uint16_t*)0x20ff3e7c = 0xf8; *(uint16_t*)0x20ff3e7e = 0x140; *(uint32_t*)0x20ff3e80 = 0; *(uint64_t*)0x20ff3e88 = 0; *(uint64_t*)0x20ff3e90 = 0; *(uint16_t*)0x20ff3e98 = 0x28; memcpy((void*)0x20ff3e9a, "\x69\x70\x76\x36\x68\x65\x61\x64\x65\x72\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00", 29); *(uint8_t*)0x20ff3eb7 = 0; *(uint8_t*)0x20ff3eb8 = 0; *(uint8_t*)0x20ff3eb9 = 0; *(uint8_t*)0x20ff3eba = 0; *(uint16_t*)0x20ff3ec0 = 0x28; memcpy((void*)0x20ff3ec2, "\x69\x70\x76\x36\x68\x65\x61\x64\x65\x72\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00", 29); *(uint8_t*)0x20ff3edf = 0; *(uint8_t*)0x20ff3ee0 = 0; *(uint8_t*)0x20ff3ee1 = 0; *(uint8_t*)0x20ff3ee2 = 0; *(uint16_t*)0x20ff3ee8 = 0x48; memcpy((void*)0x20ff3eea, "\x54\x45\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00", 29); *(uint8_t*)0x20ff3f07 = 1; *(uint8_t*)0x20ff3f08 = 0xac; *(uint8_t*)0x20ff3f09 = 0x14; *(uint8_t*)0x20ff3f0a = 0; *(uint8_t*)0x20ff3f0b = 0xbb; *(uint8_t*)0x20ff3f18 = 0x73; *(uint8_t*)0x20ff3f19 = 0x79; *(uint8_t*)0x20ff3f1a = 0x7a; *(uint8_t*)0x20ff3f1b = 0; *(uint8_t*)0x20ff3f1c = 0; *(uint64_t*)0x20ff3f28 = 0; *(uint8_t*)0x20ff3f30 = 0; *(uint8_t*)0x20ff3f31 = 0; *(uint8_t*)0x20ff3f32 = 0; *(uint8_t*)0x20ff3f33 = 0; *(uint8_t*)0x20ff3f34 = 0; *(uint8_t*)0x20ff3f35 = 0; *(uint8_t*)0x20ff3f36 = 0; *(uint8_t*)0x20ff3f37 = 0; *(uint8_t*)0x20ff3f38 = 0; *(uint8_t*)0x20ff3f39 = 0; *(uint8_t*)0x20ff3f3a = 0; *(uint8_t*)0x20ff3f3b = 0; *(uint8_t*)0x20ff3f3c = 0; *(uint8_t*)0x20ff3f3d = 0; *(uint8_t*)0x20ff3f3e = 0; *(uint8_t*)0x20ff3f3f = 0; *(uint8_t*)0x20ff3f40 = 0; *(uint8_t*)0x20ff3f41 = 0; *(uint8_t*)0x20ff3f42 = 0; *(uint8_t*)0x20ff3f43 = 0; *(uint8_t*)0x20ff3f44 = 0; *(uint8_t*)0x20ff3f45 = 0; *(uint8_t*)0x20ff3f46 = 0; *(uint8_t*)0x20ff3f47 = 0; *(uint8_t*)0x20ff3f48 = 0; *(uint8_t*)0x20ff3f49 = 0; *(uint8_t*)0x20ff3f4a = 0; *(uint8_t*)0x20ff3f4b = 0; *(uint8_t*)0x20ff3f4c = 0; *(uint8_t*)0x20ff3f4d = 0; *(uint8_t*)0x20ff3f4e = 0; *(uint8_t*)0x20ff3f4f = 0; *(uint8_t*)0x20ff3f50 = 0; *(uint8_t*)0x20ff3f51 = 0; *(uint8_t*)0x20ff3f52 = 0; *(uint8_t*)0x20ff3f53 = 0; *(uint8_t*)0x20ff3f54 = 0; *(uint8_t*)0x20ff3f55 = 0; *(uint8_t*)0x20ff3f56 = 0; *(uint8_t*)0x20ff3f57 = 0; *(uint8_t*)0x20ff3f58 = 0; *(uint8_t*)0x20ff3f59 = 0; *(uint8_t*)0x20ff3f5a = 0; *(uint8_t*)0x20ff3f5b = 0; *(uint8_t*)0x20ff3f5c = 0; *(uint8_t*)0x20ff3f5d = 0; *(uint8_t*)0x20ff3f5e = 0; *(uint8_t*)0x20ff3f5f = 0; *(uint8_t*)0x20ff3f60 = 0; *(uint8_t*)0x20ff3f61 = 0; *(uint8_t*)0x20ff3f62 = 0; *(uint8_t*)0x20ff3f63 = 0; *(uint8_t*)0x20ff3f64 = 0; *(uint8_t*)0x20ff3f65 = 0; *(uint8_t*)0x20ff3f66 = 0; *(uint8_t*)0x20ff3f67 = 0; *(uint8_t*)0x20ff3f68 = 0; *(uint8_t*)0x20ff3f69 = 0; *(uint8_t*)0x20ff3f6a = 0; *(uint8_t*)0x20ff3f6b = 0; *(uint8_t*)0x20ff3f6c = 0; *(uint8_t*)0x20ff3f6d = 0; *(uint8_t*)0x20ff3f6e = 0; *(uint8_t*)0x20ff3f6f = 0; *(uint8_t*)0x20ff3f70 = 0; *(uint8_t*)0x20ff3f71 = 0; *(uint8_t*)0x20ff3f72 = 0; *(uint8_t*)0x20ff3f73 = 0; *(uint8_t*)0x20ff3f74 = 0; *(uint8_t*)0x20ff3f75 = 0; *(uint8_t*)0x20ff3f76 = 0; *(uint8_t*)0x20ff3f77 = 0; *(uint8_t*)0x20ff3f78 = 0; *(uint8_t*)0x20ff3f79 = 0; *(uint8_t*)0x20ff3f7a = 0; *(uint8_t*)0x20ff3f7b = 0; *(uint8_t*)0x20ff3f7c = 0; *(uint8_t*)0x20ff3f7d = 0; *(uint8_t*)0x20ff3f7e = 0; *(uint8_t*)0x20ff3f7f = 0; *(uint8_t*)0x20ff3f80 = 0; *(uint8_t*)0x20ff3f81 = 0; *(uint8_t*)0x20ff3f82 = 0; *(uint8_t*)0x20ff3f83 = 0; *(uint8_t*)0x20ff3f84 = 0; *(uint8_t*)0x20ff3f85 = 0; *(uint8_t*)0x20ff3f86 = 0; *(uint8_t*)0x20ff3f87 = 0; *(uint8_t*)0x20ff3f88 = 0; *(uint8_t*)0x20ff3f89 = 0; *(uint8_t*)0x20ff3f8a = 0; *(uint8_t*)0x20ff3f8b = 0; *(uint8_t*)0x20ff3f8c = 0; *(uint8_t*)0x20ff3f8d = 0; *(uint8_t*)0x20ff3f8e = 0; *(uint8_t*)0x20ff3f8f = 0; *(uint8_t*)0x20ff3f90 = 0; *(uint8_t*)0x20ff3f91 = 0; *(uint8_t*)0x20ff3f92 = 0; *(uint8_t*)0x20ff3f93 = 0; *(uint8_t*)0x20ff3f94 = 0; *(uint8_t*)0x20ff3f95 = 0; *(uint8_t*)0x20ff3f96 = 0; *(uint8_t*)0x20ff3f97 = 0; *(uint8_t*)0x20ff3f98 = 0; *(uint8_t*)0x20ff3f99 = 0; *(uint8_t*)0x20ff3f9a = 0; *(uint8_t*)0x20ff3f9b = 0; *(uint8_t*)0x20ff3f9c = 0; *(uint8_t*)0x20ff3f9d = 0; *(uint8_t*)0x20ff3f9e = 0; *(uint8_t*)0x20ff3f9f = 0; *(uint8_t*)0x20ff3fa0 = 0; *(uint8_t*)0x20ff3fa1 = 0; *(uint8_t*)0x20ff3fa2 = 0; *(uint8_t*)0x20ff3fa3 = 0; *(uint8_t*)0x20ff3fa4 = 0; *(uint8_t*)0x20ff3fa5 = 0; *(uint8_t*)0x20ff3fa6 = 0; *(uint8_t*)0x20ff3fa7 = 0; *(uint8_t*)0x20ff3fa8 = 0; *(uint8_t*)0x20ff3fa9 = 0; *(uint8_t*)0x20ff3faa = 0; *(uint8_t*)0x20ff3fab = 0; *(uint8_t*)0x20ff3fac = 0; *(uint8_t*)0x20ff3fad = 0; *(uint8_t*)0x20ff3fae = 0; *(uint8_t*)0x20ff3faf = 0; *(uint8_t*)0x20ff3fb0 = 0; *(uint8_t*)0x20ff3fb1 = 0; *(uint8_t*)0x20ff3fb2 = 0; *(uint8_t*)0x20ff3fb3 = 0; *(uint8_t*)0x20ff3fb4 = 0; *(uint8_t*)0x20ff3fb5 = 0; *(uint8_t*)0x20ff3fb6 = 0; *(uint8_t*)0x20ff3fb7 = 0; *(uint32_t*)0x20ff3fb8 = 0; *(uint16_t*)0x20ff3fbc = 0xa8; *(uint16_t*)0x20ff3fbe = 0xd0; *(uint32_t*)0x20ff3fc0 = 0; *(uint64_t*)0x20ff3fc8 = 0; *(uint64_t*)0x20ff3fd0 = 0; *(uint16_t*)0x20ff3fd8 = 0x28; memcpy((void*)0x20ff3fda, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00", 29); *(uint8_t*)0x20ff3ff7 = 0; *(uint32_t*)0x20ff3ff8 = 0xfffffffe; syscall(__NR_setsockopt, r[1], 0x29, 0x40, 0x20ff3b88, 0x478); } int main() { for (;;) { loop(); } }