ok github.com/google/syzkaller/dashboard/app 0.431s ? github.com/google/syzkaller/dashboard/dashapi [no test files] ok github.com/google/syzkaller/executor 2.137s ok github.com/google/syzkaller/pkg/ast 2.294s ok github.com/google/syzkaller/pkg/bisect 56.908s ok github.com/google/syzkaller/pkg/build 0.141s ok github.com/google/syzkaller/pkg/compiler 12.499s ok github.com/google/syzkaller/pkg/config (cached) ok github.com/google/syzkaller/pkg/cover (cached) ? github.com/google/syzkaller/pkg/cover/backend [no test files] --- FAIL: TestGenerate (5.84s) --- FAIL: TestGenerate/freebsd/386 (0.85s) csource_test.go:52: seed=1613853510299909988 --- FAIL: TestGenerate/freebsd/386/0 (0.54s) csource_test.go:108: opts: {Threaded:false Collide:false Repeat:true RepeatTimes:0 Procs:0 Slowdown:1 Sandbox:none Fault:false FaultCall:0 FaultNth:0 Leak:false NetInjection:false NetDevices:false NetReset:false Cgroups:false BinfmtMisc:false CloseFDs:false KCSAN:false DevlinkPCI:false USB:false VhciInjection:false Wifi:false IEEE802154:false Sysctl:false UseTmpDir:true HandleSegv:false Repro:false Trace:false} program: getsockopt$inet6_sctp_SCTP_EVENT(0xffffffffffffff9c, 0x84, 0x1e, &(0x7f0000000000)={0x0, 0x4, 0x1}, &(0x7f0000000040)=0x8) getsockopt$inet6_sctp_SCTP_MAX_BURST(0xffffffffffffffff, 0x84, 0x19, &(0x7f0000000080)={0x0, 0x7fff}, &(0x7f00000000c0)=0x8) r0 = dup(0xffffffffffffffff) setsockopt$inet6_sctp_SCTP_ADAPTATION_LAYER(r0, 0x84, 0x8, &(0x7f0000000100)={0x7}, 0x4) readv(r0, &(0x7f0000000540)=[{&(0x7f0000000140)=""/149, 0x95}, {&(0x7f0000000200)=""/179, 0xb3}, {&(0x7f00000002c0)=""/172, 0xac}, {&(0x7f0000000380)=""/182, 0xb6}, {&(0x7f0000000440)=""/206, 0xce}], 0x5) thr_wake(0xffffffffffffffff) r1 = socket$inet_udplite(0x2, 0x2, 0x88) freebsd12_closefrom(r1) r2 = open(&(0x7f0000000580)='./file0\x00', 0x4, 0x40) ioctl$DIOCGETSTATE(r2, 0xc0f24413, &(0x7f00000005c0)="2a368a90b488d04ee1eccd139778043b00a6f81a3627b593b0dfce33265cda8fba8b0fa538b3e364ad1d1f7de1011c63f592a64dd0ec953f9c050f991f42d24d7bc47c4d5bf323e393605e59a1eb5bc4e948f83890911ed35b53a2b0d63db79dc21d6190f8b434d6ff85e54fb9a28a7566d1a24337e72e82acc9e518339acac7dd8960a1c9c5cb3da9e6bc0b697e9dbbc60fa8b72c3719286bf44c2e8fc8356e9125eae9bed216f349c292c989d7dcd252dfb79c4fdbdc865109f1e3cf9cd67cfa8babb7d3627ce0080910c5755c92cbb2c159172a65ea8a2085f4ce10e1436ef2f7d6f1db702a387cd35681293331bd1bdbd690274a7c372f84e4d5748791d707ee5c127eda8b84596b0c10890c881006beb38ad56d139d8c74f14f3598de551ee3a13466e67cb3d2c5fd909061522058ffbe9ae431325544c894b9841a4c253632a332c6e0d881645f90b6337db99b7fad1bd162f73d11ce5e57d5f321fb68a795c990662a35706af845b5383fe50ba8637613dd43aa7cf20020355218e060af2658866349197f30c835351bd69683baaab8be6b4da04fb35a423314fab610b8d1cf0440fedb28a5e19584ef7867bd962ba4ede513af03dda669f76c67d28fb507d5762c61d528f1cf3a7c563eee1c04106254ce3fd821c17a0defc37d79a5de7ef9352c7b411c953958d254d0d3e5ae618a68a53e45809d493c474a208ccc0f170df4836d0593b7b7ce874fa01fe0415a594f941c31f0784aad394f06b8537029555ccc73eaab0b36846fe5cc6e92db0c90a62d1d36c382c351921789dfbe0f60b13db0814aaf4fa6f813a7cf2ad12ebe1050eef92768c313718d8db202e3d1093dcf5933451efd9b72ee4ef75dfc0ea0afffb81bbee550382b6b1212cea097b709aec7c0a85799127d01376f7bd6f255732972f889b6843f615478ee23124737f813b18f3133af12b4e41e70bea058b00a5f965ed2377b48916bc2a7162adbf7bc9ca11aeaaf88c2f5229af6dd3861574a0d5d5ae482f2d7e86d172005cca565b12b199a7d81087d85776d613940b48735266d45a4ad11e168e89b893e650b984b483abb318f432f13c61f26f3deabc6b45dcf5ff4579da89a9d23251d1a6bec122cb210fc3afa89102395e1d26b14ca4180c1b6fe0b3000049550283b618ab1fd6b165855b297d9457ac54946fb99e6f0d8872db87934347b6d9a38a731bf8bd08f2a7a7d80d4cf24fa9a16c209a18494133d6dd0d292efeba7872c4d7bdfafd416e634cf90ab4dc9bccc643227a05552eee0f916ec202dcb011c8394b10996873a0a4b7aee1514f595d23289a3bf62085b0aeea0009206e7a7061ad866352241708acbcf3c2fc0fdcaaaa8b3be8e510b99e04b96ddafa9f8483b7a568c5ebaddad5677d9144a270d0444aea3c0775d241d79baea30dc4bb19a712471f112838c7525496d4a8fa66658610347d490af85305ceabf0f35ac277f2ef1b6a8e5813ce0bea587e627d725f1db1241222acd41e16c8a32bdb40778d4a10f87b1e90e006dfc03d2934589d25965240ee9c21419a2aa5bd8f3fcd3208f9b52155513a6da73468dc0703102bcca0eba18e88c19da64ab5c6bf6cb8109730153693332f7e160862719dc08175ed074f5bf2887705501331cf75254fce0e145ac2241875293036f2aa96592194073d04754c26f19e7763332b43d0287a28347d5155bacfd32628f500d9e9c04f5369f6317e606e422f98c48b11f755b2b0fdc79494a769700d35a88a330f02cab2fb7b65049e2d1e350a6e02d5d54ac7c85f268c0eaf77071d5acabed99429030d00b30c4caa21ce322d4f780e892201129ff772d22cc4d4c274b479948d22acfc1760b2917ff308e9a3aa22779bd0f453d11e0dee788dcf95b7be90c3b3b3a7fe535da503c381e346eb2a0b0e375ad726ee2a38919810d5c545edcea1b23109a3fb68e30c01cc704a9d23ae55d18cc9fdff02bd484d59f468d75a796657fdca59f55d4be7efd7378a31685334adc0cacaef9af5649da85dc6c5989cf8e2b9977a62a8ca8bc27782b1b3028a4de9a0e87dbab7879144e40a811f0b1b2880d26823c990adeb7df41116fcf6022a08d87ac7c63ecdff796dafa082e5cd85d6c3f17f8740ea1e9a0c886e0cd7074c45dbc2dc7b34c6859e06a0cee9b20ce43724a414eb77b0b804dffcc7bc44dab7fa02a3836eae396f9ede48d6deea333b0a990ebbcd1b336bb73d8e72c72e12449f1ca720a3bcd9788d1dcdde51214b771a1ca1389ebb5a05645acf97315651ae886ecd5f009a7cc62bfc49459b71fea3f8adc05d37129781ac9073eb83f1eeb1fc84a90c8316c36164259a7c24e5a200c353ebd7bf2324eff521680b218a8654b6df7b046afdc85a78cfee174a6e91978d4af6511d30799195df42886c8327dcc624c2912f83fe1bb6302ec71a8f098d5e056d89595c460062d29a5546e5ba77e0a179a848f033e11afc1a19897e83c2ab7eb58207222156767ebdb2e2426ae2c594c205da59650283b33cbf50a77d607de9e2ffe0f080fd773c7e03f20505dd0cb15cd8924cdd6b87d7f615bccd2eb47839561d79a02ca9cde0fde19b5a0c2a90bd4a0c7361bfdad5374ac42b5161115759cfa2ac08c16795ab52c84c540710b1d1d5006f2aba098c6b682a51f03ff5d79b6bce020ce726f7fa2e7685138087d609c05054a9f4c4568152e8900d866bd4a980b07d35b833647d1f4e26575d4de1c7a7ccf5cd119d6db4c72fb9c24e3a085ecdde521ff18bec6c16c931457cd8e26461d48b55c211a27ba498663b34ea0dcfd8cdfa12900fe8367abbeac8e4eb1a18036c9c1694935a573b61afc05c1265aafb6ef584e823b842764b71dca331837649a51d0c96cefec435835b8f4b5dac5d1f24be94d5378a1664efc1daf557015657adb77881c5d181cd9d1f1d3d96bf74d5167930285b6f98fef31bbef7378cf2f12c4c479f96076d8170d768dfd2fe823cd14d6d7059d75d9547ab22ada6fd1a364ae7629e6f7e466a4c8a49483e4555f6c0881fd2cee97923247f2ca839f88b1eda7c3b7c75f530c0fd60b85e8b10d4b58d7b8815bbf1e4f42a16b25225888bda247d46be3551325b606f61ce776a92f046884fd275e82d4c08761b60d698c5adde78ded62d8835a1b23b3ff96576b2c198f722e76ea22667388a44ed316ea6dc5be4bd84043572a2afa19cd9a84ef5ffc28fb0f689c4c2526cec261502f1e0af665cbdef50e3a669c0aa1364307c89d766d5869e2c9e414ca216735c01826eee4ea8bcb09b67a8dd8f7edb68536c6eefa0fa0d78f4a86bd70482d9852e48291d1e16ad11434779a27861af8192a64275084e7d9e0604c52073c3324b9577b088073ab270041d041cf5ff18831b80e00a273b6860059bec4a6c41902644ef923e890d558b5a96ef9eefe19de120735e98987a98d53a56e3226c576cd2ef486ae138ff3b62eae33ca91f8b77d3a98f583e863d4ebe53d0b3fa97c4768280593f935f6142595ed15057adf8b60148620493afeb5ff5de17b6ac26d5bbb7cf7f47132642ebe73de0051f073610b0c1eaef6749919cf0e87144c0d8f70eeabb7fe6c2e58f914e544e8be21c2f3a602d61cfcf01765e49cbcd0a6f9b1616ec56a4de6e52bc979840a842d9b2dd4b5d59d15b3ce85138bc98c1e254c84853b6726b6fdb7bc79e90d34be3dd86c4defbfac943880292fec0d995cdb5244514d11518efe79204d53c9cda4a487bf30e9ff7f286e536ac1fe9fa1a71f3eed0e47f8471e88db19fcd3e3197698969798f26d5c9c4b8a7b935a0faf395d2ba9ee8c57e13747ad4d01a2eeca7e853f9c5273fc161854c2e966f853a4888844442291ed0b3c59315f8cbae2c9a4af084d10cb4c7e640001b7f340132d80474c6daa0e009c380df0feb57d5eb1ed8b40cdf2446c8a424d48ebe5897d922e42f25b98836395db513e4904fc2521acca5303ac576454e602d4b35520736818a8468379000f8f30f9e37d05c7bc1f16ecc9acb0f8c630966775575a4064a770f7b53f7ca7ccc00bdb71195d53cf21b74820665220c05785b225b2cbe2855a5ae40b9bce9e1eddb78a9e4c0825fb47fff9e6f37a9554d9ee046cd18a301daee26ec5eef4f101256e0c59df35cbb5192f80162ba3937dbf3619987bf18b1d69d6e6e0c42fead7f0ed6d2cf54da78f874960e445a108b7bb0987cb9427e1023a1c85c272c10bca781f98c76e10673924e658e736cc544afc0cdecde8e58d14a18e4b742150751a46a14d90d710a9ea82266e46654bbc153685c195998b0923cce31350b79b2039f23855dc3ba11438b15cc03aaad9d31b5819c4b41234e93a306155479a6bd45df84e1cf9e8d8ea0e896d9288d2e48d8730d86bf8997c62a8378ad95925672defbaa1c9cba315ce1e64f8616b174b88c57ab780748ae96cdbe36dc4d79054fdd7bec3b40b1fc7b1266e197ca7fe41d0743ad9a8a10430a4e1ccedf8aa48623fffa2bfd330364b0e3aa1db7d9b9aa4ca8e17d93c916d6afe57d33f7b059b670bba34bceed51165ffc0dca6af532eb3ef976b296e975ce25b40ec639ca43593b25946ba82a819e8f1afa7dfa345f35cc08bf3e77302886caf08e1432445f67dc59c6985e7f8c9bbc8a68a3925e20c14bdd2b6922bc924321f5823df511834f2a29e4d7e320f963c7ad3a15222afa22a98375147fb3f4333f5b8c139a1045d3cc6de57b24a2341cc16b3dfe069a35865b852c2f84fd4ec28ec178fd0b9ff32e1e529bf3dc969ae17db1396c2cba74b6ad4b83207eab4b12c93604da7ebbd039bae1ea1cbf5c979870e8e87aec0c883e8b952bec1986760403b193e165fff20ff5160a434bd25a7cbecc4f8b9b7a55b41296f9609342b8a76afb6ab9891bd1742708a99f34a56efc139200f1b5fe157bb276240e7e2a0a0f4ea591ac0b24a21ccd1cc4ef6c8baa082dea23fe549901ecbe78c474b27543349059f9115a59139e45ee6f9ff4052385422c93861594fe989fa84d2821d63ea55d9327d7019e912f7ebaebf24bf2116ccc1a6a283c397ba3caa5ea8d44ac736783fb4ef27159570aef51156e90e694faa6d1a9e1921d8d1b187c3ea367f3308cfe1b7412a558bf3ce7ffef30f8927e496126e3efe171f4beef71bae80d363f5b73aa8f7a91282426ca3c7f088e42556c56545bd0de19696d7b60737658008fd63c23fefdcf55a335846b1a1daba80404b4fc487d19f32e3ad8681390f2c57a20974244fd112dd0c8830e41160d5d740599513ae0c03a908a008eb411968d53f5b9c1d8dd4f3f0365592e626f4f20168521a58739767b18cf2400ca6f697ccea4463aa90389092f35eca8a4b1b7c5da04283a67b0fb13f36047376bf3591aebd37abf508b366f5b6f5442f41c0572fc8ea15b5d92cc3479d018e57d72dbc1b03710dae0a3e27f92a6d96f0192b7d63af2827e693926c08f13039e8f8c9ec97d5ffb34e5ec25f1755964df048d22f48eed1756bf1660c619fb1a036901fd9ad5904ee354e90174b12ee8d4499e18f699f6f8bdcfa1959b5addba3f40eebc727594c7d267f5f123ed25db50eb98288c2d51416a120597f4ec0ebaa08a9f1afa7a92d63de9541d1d113c8d645bf0279db6e7e1d0ae71b785e47e14063ecfb148604d4b9e2ba9ac90744b6bfaab637e3e15d4eea24cb4e9c76d8efa750a7be5c5241a46c596fd39688b0dd52e540641c3f98d7095c6347ddebd31cce6193804607d34ff82f3e0dccc981a68e0d690a8b806ff757bb11") syz_emit_ethernet(0x2e, &(0x7f0000000000)={@empty, @broadcast, [{[], {0x8100, 0x1, 0x1, 0x4}}], {@arp={0x806, @ether_ipv4={0x1, 0x800, 0x6, 0x4, 0x9, @remote, @multicast1, @remote, @broadcast}}}}) syz_execute_func(&(0x7f0000000040)="0f5a60b006c4e1016bd7652fc4e1f8118100000080c4c11960183e673e0f01d9f2e1abf3ee660f148bf1ffffff") syz_extract_tcp_res(&(0x7f0000000080), 0x7fffffff, 0x7) csource_test.go:109: failed to build program: // autogenerated by syzkaller (https://github.com/google/syzkaller) #define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include static void kill_and_wait(int pid, int* status) { kill(pid, SIGKILL); while (waitpid(-1, status, 0) != pid) { } } static void sleep_ms(uint64_t ms) { usleep(ms * 1000); } static uint64_t current_time_ms(void) { struct timespec ts; if (clock_gettime(CLOCK_MONOTONIC, &ts)) exit(1); return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000; } static void use_temporary_dir(void) { char tmpdir_template[] = "./syzkaller.XXXXXX"; char* tmpdir = mkdtemp(tmpdir_template); if (!tmpdir) exit(1); if (chmod(tmpdir, 0777)) exit(1); if (chdir(tmpdir)) exit(1); } static void __attribute__((noinline)) remove_dir(const char* dir) { DIR* dp = opendir(dir); if (dp == NULL) { if (errno == EACCES) { if (rmdir(dir)) exit(1); return; } exit(1); } struct dirent* ep = 0; while ((ep = readdir(dp))) { if (strcmp(ep->d_name, ".") == 0 || strcmp(ep->d_name, "..") == 0) continue; char filename[FILENAME_MAX]; snprintf(filename, sizeof(filename), "%s/%s", dir, ep->d_name); struct stat st; if (lstat(filename, &st)) exit(1); if (S_ISDIR(st.st_mode)) { remove_dir(filename); continue; } if (unlink(filename)) exit(1); } closedir(dp); if (rmdir(dir)) exit(1); } #define BITMASK(bf_off,bf_len) (((1ull << (bf_len)) - 1) << (bf_off)) #define STORE_BY_BITMASK(type,htobe,addr,val,bf_off,bf_len) *(type*)(addr) = htobe((htobe(*(type*)(addr)) & ~BITMASK((bf_off), (bf_len))) | (((type)(val) << (bf_off)) & BITMASK((bf_off), (bf_len)))) static void sandbox_common() { if (setsid() == -1) exit(1); struct rlimit rlim; rlim.rlim_cur = rlim.rlim_max = 128 << 20; setrlimit(RLIMIT_AS, &rlim); rlim.rlim_cur = rlim.rlim_max = 8 << 20; setrlimit(RLIMIT_MEMLOCK, &rlim); rlim.rlim_cur = rlim.rlim_max = 1 << 20; setrlimit(RLIMIT_FSIZE, &rlim); rlim.rlim_cur = rlim.rlim_max = 1 << 20; setrlimit(RLIMIT_STACK, &rlim); rlim.rlim_cur = rlim.rlim_max = 0; setrlimit(RLIMIT_CORE, &rlim); rlim.rlim_cur = rlim.rlim_max = 256; setrlimit(RLIMIT_NOFILE, &rlim); } static void loop(); static int do_sandbox_none(void) { sandbox_common(); loop(); return 0; } static long syz_execute_func(volatile long text) { ((void (*)(void))(text))(); return 0; } static void execute_one(void); #define WAIT_FLAGS 0 static void loop(void) { int iter = 0; for (;; iter++) { char cwdbuf[32]; sprintf(cwdbuf, "./%d", iter); if (mkdir(cwdbuf, 0777)) exit(1); int pid = fork(); if (pid < 0) exit(1); if (pid == 0) { if (chdir(cwdbuf)) exit(1); execute_one(); exit(0); } int status = 0; uint64_t start = current_time_ms(); for (;;) { if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid) break; sleep_ms(1); if (current_time_ms() - start < 5000) { continue; } kill_and_wait(pid, &status); break; } remove_dir(cwdbuf); } } uint64_t r[3] = {0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff}; void execute_one(void) { intptr_t res = 0; *(uint32_t*)0x10000000 = 0; *(uint16_t*)0x10000004 = 4; *(uint8_t*)0x10000006 = 1; *(uint32_t*)0x10000040 = 8; syscall(SYS_getsockopt, 0xffffff9c, 0x84, 0x1e, 0x10000000, 0x10000040); *(uint32_t*)0x10000080 = 0; *(uint32_t*)0x10000084 = 0x7fff; *(uint32_t*)0x100000c0 = 8; syscall(SYS_getsockopt, -1, 0x84, 0x19, 0x10000080, 0x100000c0); res = syscall(SYS_dup, -1); if (res != -1) r[0] = res; *(uint32_t*)0x10000100 = 7; syscall(SYS_setsockopt, (intptr_t)r[0], 0x84, 8, 0x10000100, 4); *(uint32_t*)0x10000540 = 0x10000140; *(uint32_t*)0x10000544 = 0x95; *(uint32_t*)0x10000548 = 0x10000200; *(uint32_t*)0x1000054c = 0xb3; *(uint32_t*)0x10000550 = 0x100002c0; *(uint32_t*)0x10000554 = 0xac; *(uint32_t*)0x10000558 = 0x10000380; *(uint32_t*)0x1000055c = 0xb6; *(uint32_t*)0x10000560 = 0x10000440; *(uint32_t*)0x10000564 = 0xce; syscall(SYS_readv, (intptr_t)r[0], 0x10000540, 5); syscall(SYS_thr_wake, -1); res = syscall(SYS_socket, 2, 2, 0x88); if (res != -1) r[1] = res; syscall(SYS_freebsd12_closefrom, (intptr_t)r[1]); memcpy((void*)0x10000580, "./file0\000", 8); res = syscall(SYS_open, 0x10000580, 4, 0x40); if (res != -1) r[2] = res; memcpy((void*)0x100005c0, "\x2a\x36\x8a\x90\xb4\x88\xd0\x4e\xe1\xec\xcd\x13\x97\x78\x04\x3b\x00\xa6\xf8\x1a\x36\x27\xb5\x93\xb0\xdf\xce\x33\x26\x5c\xda\x8f\xba\x8b\x0f\xa5\x38\xb3\xe3\x64\xad\x1d\x1f\x7d\xe1\x01\x1c\x63\xf5\x92\xa6\x4d\xd0\xec\x95\x3f\x9c\x05\x0f\x99\x1f\x42\xd2\x4d\x7b\xc4\x7c\x4d\x5b\xf3\x23\xe3\x93\x60\x5e\x59\xa1\xeb\x5b\xc4\xe9\x48\xf8\x38\x90\x91\x1e\xd3\x5b\x53\xa2\xb0\xd6\x3d\xb7\x9d\xc2\x1d\x61\x90\xf8\xb4\x34\xd6\xff\x85\xe5\x4f\xb9\xa2\x8a\x75\x66\xd1\xa2\x43\x37\xe7\x2e\x82\xac\xc9\xe5\x18\x33\x9a\xca\xc7\xdd\x89\x60\xa1\xc9\xc5\xcb\x3d\xa9\xe6\xbc\x0b\x69\x7e\x9d\xbb\xc6\x0f\xa8\xb7\x2c\x37\x19\x28\x6b\xf4\x4c\x2e\x8f\xc8\x35\x6e\x91\x25\xea\xe9\xbe\xd2\x16\xf3\x49\xc2\x92\xc9\x89\xd7\xdc\xd2\x52\xdf\xb7\x9c\x4f\xdb\xdc\x86\x51\x09\xf1\xe3\xcf\x9c\xd6\x7c\xfa\x8b\xab\xb7\xd3\x62\x7c\xe0\x08\x09\x10\xc5\x75\x5c\x92\xcb\xb2\xc1\x59\x17\x2a\x65\xea\x8a\x20\x85\xf4\xce\x10\xe1\x43\x6e\xf2\xf7\xd6\xf1\xdb\x70\x2a\x38\x7c\xd3\x56\x81\x29\x33\x31\xbd\x1b\xdb\xd6\x90\x27\x4a\x7c\x37\x2f\x84\xe4\xd5\x74\x87\x91\xd7\x07\xee\x5c\x12\x7e\xda\x8b\x84\x59\x6b\x0c\x10\x89\x0c\x88\x10\x06\xbe\xb3\x8a\xd5\x6d\x13\x9d\x8c\x74\xf1\x4f\x35\x98\xde\x55\x1e\xe3\xa1\x34\x66\xe6\x7c\xb3\xd2\xc5\xfd\x90\x90\x61\x52\x20\x58\xff\xbe\x9a\xe4\x31\x32\x55\x44\xc8\x94\xb9\x84\x1a\x4c\x25\x36\x32\xa3\x32\xc6\xe0\xd8\x81\x64\x5f\x90\xb6\x33\x7d\xb9\x9b\x7f\xad\x1b\xd1\x62\xf7\x3d\x11\xce\x5e\x57\xd5\xf3\x21\xfb\x68\xa7\x95\xc9\x90\x66\x2a\x35\x70\x6a\xf8\x45\xb5\x38\x3f\xe5\x0b\xa8\x63\x76\x13\xdd\x43\xaa\x7c\xf2\x00\x20\x35\x52\x18\xe0\x60\xaf\x26\x58\x86\x63\x49\x19\x7f\x30\xc8\x35\x35\x1b\xd6\x96\x83\xba\xaa\xb8\xbe\x6b\x4d\xa0\x4f\xb3\x5a\x42\x33\x14\xfa\xb6\x10\xb8\xd1\xcf\x04\x40\xfe\xdb\x28\xa5\xe1\x95\x84\xef\x78\x67\xbd\x96\x2b\xa4\xed\xe5\x13\xaf\x03\xdd\xa6\x69\xf7\x6c\x67\xd2\x8f\xb5\x07\xd5\x76\x2c\x61\xd5\x28\xf1\xcf\x3a\x7c\x56\x3e\xee\x1c\x04\x10\x62\x54\xce\x3f\xd8\x21\xc1\x7a\x0d\xef\xc3\x7d\x79\xa5\xde\x7e\xf9\x35\x2c\x7b\x41\x1c\x95\x39\x58\xd2\x54\xd0\xd3\xe5\xae\x61\x8a\x68\xa5\x3e\x45\x80\x9d\x49\x3c\x47\x4a\x20\x8c\xcc\x0f\x17\x0d\xf4\x83\x6d\x05\x93\xb7\xb7\xce\x87\x4f\xa0\x1f\xe0\x41\x5a\x59\x4f\x94\x1c\x31\xf0\x78\x4a\xad\x39\x4f\x06\xb8\x53\x70\x29\x55\x5c\xcc\x73\xea\xab\x0b\x36\x84\x6f\xe5\xcc\x6e\x92\xdb\x0c\x90\xa6\x2d\x1d\x36\xc3\x82\xc3\x51\x92\x17\x89\xdf\xbe\x0f\x60\xb1\x3d\xb0\x81\x4a\xaf\x4f\xa6\xf8\x13\xa7\xcf\x2a\xd1\x2e\xbe\x10\x50\xee\xf9\x27\x68\xc3\x13\x71\x8d\x8d\xb2\x02\xe3\xd1\x09\x3d\xcf\x59\x33\x45\x1e\xfd\x9b\x72\xee\x4e\xf7\x5d\xfc\x0e\xa0\xaf\xff\xb8\x1b\xbe\xe5\x50\x38\x2b\x6b\x12\x12\xce\xa0\x97\xb7\x09\xae\xc7\xc0\xa8\x57\x99\x12\x7d\x01\x37\x6f\x7b\xd6\xf2\x55\x73\x29\x72\xf8\x89\xb6\x84\x3f\x61\x54\x78\xee\x23\x12\x47\x37\xf8\x13\xb1\x8f\x31\x33\xaf\x12\xb4\xe4\x1e\x70\xbe\xa0\x58\xb0\x0a\x5f\x96\x5e\xd2\x37\x7b\x48\x91\x6b\xc2\xa7\x16\x2a\xdb\xf7\xbc\x9c\xa1\x1a\xea\xaf\x88\xc2\xf5\x22\x9a\xf6\xdd\x38\x61\x57\x4a\x0d\x5d\x5a\xe4\x82\xf2\xd7\xe8\x6d\x17\x20\x05\xcc\xa5\x65\xb1\x2b\x19\x9a\x7d\x81\x08\x7d\x85\x77\x6d\x61\x39\x40\xb4\x87\x35\x26\x6d\x45\xa4\xad\x11\xe1\x68\xe8\x9b\x89\x3e\x65\x0b\x98\x4b\x48\x3a\xbb\x31\x8f\x43\x2f\x13\xc6\x1f\x26\xf3\xde\xab\xc6\xb4\x5d\xcf\x5f\xf4\x57\x9d\xa8\x9a\x9d\x23\x25\x1d\x1a\x6b\xec\x12\x2c\xb2\x10\xfc\x3a\xfa\x89\x10\x23\x95\xe1\xd2\x6b\x14\xca\x41\x80\xc1\xb6\xfe\x0b\x30\x00\x04\x95\x50\x28\x3b\x61\x8a\xb1\xfd\x6b\x16\x58\x55\xb2\x97\xd9\x45\x7a\xc5\x49\x46\xfb\x99\xe6\xf0\xd8\x87\x2d\xb8\x79\x34\x34\x7b\x6d\x9a\x38\xa7\x31\xbf\x8b\xd0\x8f\x2a\x7a\x7d\x80\xd4\xcf\x24\xfa\x9a\x16\xc2\x09\xa1\x84\x94\x13\x3d\x6d\xd0\xd2\x92\xef\xeb\xa7\x87\x2c\x4d\x7b\xdf\xaf\xd4\x16\xe6\x34\xcf\x90\xab\x4d\xc9\xbc\xcc\x64\x32\x27\xa0\x55\x52\xee\xe0\xf9\x16\xec\x20\x2d\xcb\x01\x1c\x83\x94\xb1\x09\x96\x87\x3a\x0a\x4b\x7a\xee\x15\x14\xf5\x95\xd2\x32\x89\xa3\xbf\x62\x08\x5b\x0a\xee\xa0\x00\x92\x06\xe7\xa7\x06\x1a\xd8\x66\x35\x22\x41\x70\x8a\xcb\xcf\x3c\x2f\xc0\xfd\xca\xaa\xa8\xb3\xbe\x8e\x51\x0b\x99\xe0\x4b\x96\xdd\xaf\xa9\xf8\x48\x3b\x7a\x56\x8c\x5e\xba\xdd\xad\x56\x77\xd9\x14\x4a\x27\x0d\x04\x44\xae\xa3\xc0\x77\x5d\x24\x1d\x79\xba\xea\x30\xdc\x4b\xb1\x9a\x71\x24\x71\xf1\x12\x83\x8c\x75\x25\x49\x6d\x4a\x8f\xa6\x66\x58\x61\x03\x47\xd4\x90\xaf\x85\x30\x5c\xea\xbf\x0f\x35\xac\x27\x7f\x2e\xf1\xb6\xa8\xe5\x81\x3c\xe0\xbe\xa5\x87\xe6\x27\xd7\x25\xf1\xdb\x12\x41\x22\x2a\xcd\x41\xe1\x6c\x8a\x32\xbd\xb4\x07\x78\xd4\xa1\x0f\x87\xb1\xe9\x0e\x00\x6d\xfc\x03\xd2\x93\x45\x89\xd2\x59\x65\x24\x0e\xe9\xc2\x14\x19\xa2\xaa\x5b\xd8\xf3\xfc\xd3\x20\x8f\x9b\x52\x15\x55\x13\xa6\xda\x73\x46\x8d\xc0\x70\x31\x02\xbc\xca\x0e\xba\x18\xe8\x8c\x19\xda\x64\xab\x5c\x6b\xf6\xcb\x81\x09\x73\x01\x53\x69\x33\x32\xf7\xe1\x60\x86\x27\x19\xdc\x08\x17\x5e\xd0\x74\xf5\xbf\x28\x87\x70\x55\x01\x33\x1c\xf7\x52\x54\xfc\xe0\xe1\x45\xac\x22\x41\x87\x52\x93\x03\x6f\x2a\xa9\x65\x92\x19\x40\x73\xd0\x47\x54\xc2\x6f\x19\xe7\x76\x33\x32\xb4\x3d\x02\x87\xa2\x83\x47\xd5\x15\x5b\xac\xfd\x32\x62\x8f\x50\x0d\x9e\x9c\x04\xf5\x36\x9f\x63\x17\xe6\x06\xe4\x22\xf9\x8c\x48\xb1\x1f\x75\x5b\x2b\x0f\xdc\x79\x49\x4a\x76\x97\x00\xd3\x5a\x88\xa3\x30\xf0\x2c\xab\x2f\xb7\xb6\x50\x49\xe2\xd1\xe3\x50\xa6\xe0\x2d\x5d\x54\xac\x7c\x85\xf2\x68\xc0\xea\xf7\x70\x71\xd5\xac\xab\xed\x99\x42\x90\x30\xd0\x0b\x30\xc4\xca\xa2\x1c\xe3\x22\xd4\xf7\x80\xe8\x92\x20\x11\x29\xff\x77\x2d\x22\xcc\x4d\x4c\x27\x4b\x47\x99\x48\xd2\x2a\xcf\xc1\x76\x0b\x29\x17\xff\x30\x8e\x9a\x3a\xa2\x27\x79\xbd\x0f\x45\x3d\x11\xe0\xde\xe7\x88\xdc\xf9\x5b\x7b\xe9\x0c\x3b\x3b\x3a\x7f\xe5\x35\xda\x50\x3c\x38\x1e\x34\x6e\xb2\xa0\xb0\xe3\x75\xad\x72\x6e\xe2\xa3\x89\x19\x81\x0d\x5c\x54\x5e\xdc\xea\x1b\x23\x10\x9a\x3f\xb6\x8e\x30\xc0\x1c\xc7\x04\xa9\xd2\x3a\xe5\x5d\x18\xcc\x9f\xdf\xf0\x2b\xd4\x84\xd5\x9f\x46\x8d\x75\xa7\x96\x65\x7f\xdc\xa5\x9f\x55\xd4\xbe\x7e\xfd\x73\x78\xa3\x16\x85\x33\x4a\xdc\x0c\xac\xae\xf9\xaf\x56\x49\xda\x85\xdc\x6c\x59\x89\xcf\x8e\x2b\x99\x77\xa6\x2a\x8c\xa8\xbc\x27\x78\x2b\x1b\x30\x28\xa4\xde\x9a\x0e\x87\xdb\xab\x78\x79\x14\x4e\x40\xa8\x11\xf0\xb1\xb2\x88\x0d\x26\x82\x3c\x99\x0a\xde\xb7\xdf\x41\x11\x6f\xcf\x60\x22\xa0\x8d\x87\xac\x7c\x63\xec\xdf\xf7\x96\xda\xfa\x08\x2e\x5c\xd8\x5d\x6c\x3f\x17\xf8\x74\x0e\xa1\xe9\xa0\xc8\x86\xe0\xcd\x70\x74\xc4\x5d\xbc\x2d\xc7\xb3\x4c\x68\x59\xe0\x6a\x0c\xee\x9b\x20\xce\x43\x72\x4a\x41\x4e\xb7\x7b\x0b\x80\x4d\xff\xcc\x7b\xc4\x4d\xab\x7f\xa0\x2a\x38\x36\xea\xe3\x96\xf9\xed\xe4\x8d\x6d\xee\xa3\x33\xb0\xa9\x90\xeb\xbc\xd1\xb3\x36\xbb\x73\xd8\xe7\x2c\x72\xe1\x24\x49\xf1\xca\x72\x0a\x3b\xcd\x97\x88\xd1\xdc\xdd\xe5\x12\x14\xb7\x71\xa1\xca\x13\x89\xeb\xb5\xa0\x56\x45\xac\xf9\x73\x15\x65\x1a\xe8\x86\xec\xd5\xf0\x09\xa7\xcc\x62\xbf\xc4\x94\x59\xb7\x1f\xea\x3f\x8a\xdc\x05\xd3\x71\x29\x78\x1a\xc9\x07\x3e\xb8\x3f\x1e\xeb\x1f\xc8\x4a\x90\xc8\x31\x6c\x36\x16\x42\x59\xa7\xc2\x4e\x5a\x20\x0c\x35\x3e\xbd\x7b\xf2\x32\x4e\xff\x52\x16\x80\xb2\x18\xa8\x65\x4b\x6d\xf7\xb0\x46\xaf\xdc\x85\xa7\x8c\xfe\xe1\x74\xa6\xe9\x19\x78\xd4\xaf\x65\x11\xd3\x07\x99\x19\x5d\xf4\x28\x86\xc8\x32\x7d\xcc\x62\x4c\x29\x12\xf8\x3f\xe1\xbb\x63\x02\xec\x71\xa8\xf0\x98\xd5\xe0\x56\xd8\x95\x95\xc4\x60\x06\x2d\x29\xa5\x54\x6e\x5b\xa7\x7e\x0a\x17\x9a\x84\x8f\x03\x3e\x11\xaf\xc1\xa1\x98\x97\xe8\x3c\x2a\xb7\xeb\x58\x20\x72\x22\x15\x67\x67\xeb\xdb\x2e\x24\x26\xae\x2c\x59\x4c\x20\x5d\xa5\x96\x50\x28\x3b\x33\xcb\xf5\x0a\x77\xd6\x07\xde\x9e\x2f\xfe\x0f\x08\x0f\xd7\x73\xc7\xe0\x3f\x20\x50\x5d\xd0\xcb\x15\xcd\x89\x24\xcd\xd6\xb8\x7d\x7f\x61\x5b\xcc\xd2\xeb\x47\x83\x95\x61\xd7\x9a\x02\xca\x9c\xde\x0f\xde\x19\xb5\xa0\xc2\xa9\x0b\xd4\xa0\xc7\x36\x1b\xfd\xad\x53\x74\xac\x42\xb5\x16\x11\x15\x75\x9c\xfa\x2a\xc0\x8c\x16\x79\x5a\xb5\x2c\x84\xc5\x40\x71\x0b\x1d\x1d\x50\x06\xf2\xab\xa0\x98\xc6\xb6\x82\xa5\x1f\x03\xff\x5d\x79\xb6\xbc\xe0\x20\xce\x72\x6f\x7f\xa2\xe7\x68\x51\x38\x08\x7d\x60\x9c\x05\x05\x4a\x9f\x4c\x45\x68\x15\x2e\x89\x00\xd8\x66\xbd\x4a\x98\x0b\x07\xd3\x5b\x83\x36\x47\xd1\xf4\xe2\x65\x75\xd4\xde\x1c\x7a\x7c\xcf\x5c\xd1\x19\xd6\xdb\x4c\x72\xfb\x9c\x24\xe3\xa0\x85\xec\xdd\xe5\x21\xff\x18\xbe\xc6\xc1\x6c\x93\x14\x57\xcd\x8e\x26\x46\x1d\x48\xb5\x5c\x21\x1a\x27\xba\x49\x86\x63\xb3\x4e\xa0\xdc\xfd\x8c\xdf\xa1\x29\x00\xfe\x83\x67\xab\xbe\xac\x8e\x4e\xb1\xa1\x80\x36\xc9\xc1\x69\x49\x35\xa5\x73\xb6\x1a\xfc\x05\xc1\x26\x5a\xaf\xb6\xef\x58\x4e\x82\x3b\x84\x27\x64\xb7\x1d\xca\x33\x18\x37\x64\x9a\x51\xd0\xc9\x6c\xef\xec\x43\x58\x35\xb8\xf4\xb5\xda\xc5\xd1\xf2\x4b\xe9\x4d\x53\x78\xa1\x66\x4e\xfc\x1d\xaf\x55\x70\x15\x65\x7a\xdb\x77\x88\x1c\x5d\x18\x1c\xd9\xd1\xf1\xd3\xd9\x6b\xf7\x4d\x51\x67\x93\x02\x85\xb6\xf9\x8f\xef\x31\xbb\xef\x73\x78\xcf\x2f\x12\xc4\xc4\x79\xf9\x60\x76\xd8\x17\x0d\x76\x8d\xfd\x2f\xe8\x23\xcd\x14\xd6\xd7\x05\x9d\x75\xd9\x54\x7a\xb2\x2a\xda\x6f\xd1\xa3\x64\xae\x76\x29\xe6\xf7\xe4\x66\xa4\xc8\xa4\x94\x83\xe4\x55\x5f\x6c\x08\x81\xfd\x2c\xee\x97\x92\x32\x47\xf2\xca\x83\x9f\x88\xb1\xed\xa7\xc3\xb7\xc7\x5f\x53\x0c\x0f\xd6\x0b\x85\xe8\xb1\x0d\x4b\x58\xd7\xb8\x81\x5b\xbf\x1e\x4f\x42\xa1\x6b\x25\x22\x58\x88\xbd\xa2\x47\xd4\x6b\xe3\x55\x13\x25\xb6\x06\xf6\x1c\xe7\x76\xa9\x2f\x04\x68\x84\xfd\x27\x5e\x82\xd4\xc0\x87\x61\xb6\x0d\x69\x8c\x5a\xdd\xe7\x8d\xed\x62\xd8\x83\x5a\x1b\x23\xb3\xff\x96\x57\x6b\x2c\x19\x8f\x72\x2e\x76\xea\x22\x66\x73\x88\xa4\x4e\xd3\x16\xea\x6d\xc5\xbe\x4b\xd8\x40\x43\x57\x2a\x2a\xfa\x19\xcd\x9a\x84\xef\x5f\xfc\x28\xfb\x0f\x68\x9c\x4c\x25\x26\xce\xc2\x61\x50\x2f\x1e\x0a\xf6\x65\xcb\xde\xf5\x0e\x3a\x66\x9c\x0a\xa1\x36\x43\x07\xc8\x9d\x76\x6d\x58\x69\xe2\xc9\xe4\x14\xca\x21\x67\x35\xc0\x18\x26\xee\xe4\xea\x8b\xcb\x09\xb6\x7a\x8d\xd8\xf7\xed\xb6\x85\x36\xc6\xee\xfa\x0f\xa0\xd7\x8f\x4a\x86\xbd\x70\x48\x2d\x98\x52\xe4\x82\x91\xd1\xe1\x6a\xd1\x14\x34\x77\x9a\x27\x86\x1a\xf8\x19\x2a\x64\x27\x50\x84\xe7\xd9\xe0\x60\x4c\x52\x07\x3c\x33\x24\xb9\x57\x7b\x08\x80\x73\xab\x27\x00\x41\xd0\x41\xcf\x5f\xf1\x88\x31\xb8\x0e\x00\xa2\x73\xb6\x86\x00\x59\xbe\xc4\xa6\xc4\x19\x02\x64\x4e\xf9\x23\xe8\x90\xd5\x58\xb5\xa9\x6e\xf9\xee\xfe\x19\xde\x12\x07\x35\xe9\x89\x87\xa9\x8d\x53\xa5\x6e\x32\x26\xc5\x76\xcd\x2e\xf4\x86\xae\x13\x8f\xf3\xb6\x2e\xae\x33\xca\x91\xf8\xb7\x7d\x3a\x98\xf5\x83\xe8\x63\xd4\xeb\xe5\x3d\x0b\x3f\xa9\x7c\x47\x68\x28\x05\x93\xf9\x35\xf6\x14\x25\x95\xed\x15\x05\x7a\xdf\x8b\x60\x14\x86\x20\x49\x3a\xfe\xb5\xff\x5d\xe1\x7b\x6a\xc2\x6d\x5b\xbb\x7c\xf7\xf4\x71\x32\x64\x2e\xbe\x73\xde\x00\x51\xf0\x73\x61\x0b\x0c\x1e\xae\xf6\x74\x99\x19\xcf\x0e\x87\x14\x4c\x0d\x8f\x70\xee\xab\xb7\xfe\x6c\x2e\x58\xf9\x14\xe5\x44\xe8\xbe\x21\xc2\xf3\xa6\x02\xd6\x1c\xfc\xf0\x17\x65\xe4\x9c\xbc\xd0\xa6\xf9\xb1\x61\x6e\xc5\x6a\x4d\xe6\xe5\x2b\xc9\x79\x84\x0a\x84\x2d\x9b\x2d\xd4\xb5\xd5\x9d\x15\xb3\xce\x85\x13\x8b\xc9\x8c\x1e\x25\x4c\x84\x85\x3b\x67\x26\xb6\xfd\xb7\xbc\x79\xe9\x0d\x34\xbe\x3d\xd8\x6c\x4d\xef\xbf\xac\x94\x38\x80\x29\x2f\xec\x0d\x99\x5c\xdb\x52\x44\x51\x4d\x11\x51\x8e\xfe\x79\x20\x4d\x53\xc9\xcd\xa4\xa4\x87\xbf\x30\xe9\xff\x7f\x28\x6e\x53\x6a\xc1\xfe\x9f\xa1\xa7\x1f\x3e\xed\x0e\x47\xf8\x47\x1e\x88\xdb\x19\xfc\xd3\xe3\x19\x76\x98\x96\x97\x98\xf2\x6d\x5c\x9c\x4b\x8a\x7b\x93\x5a\x0f\xaf\x39\x5d\x2b\xa9\xee\x8c\x57\xe1\x37\x47\xad\x4d\x01\xa2\xee\xca\x7e\x85\x3f\x9c\x52\x73\xfc\x16\x18\x54\xc2\xe9\x66\xf8\x53\xa4\x88\x88\x44\x44\x22\x91\xed\x0b\x3c\x59\x31\x5f\x8c\xba\xe2\xc9\xa4\xaf\x08\x4d\x10\xcb\x4c\x7e\x64\x00\x01\xb7\xf3\x40\x13\x2d\x80\x47\x4c\x6d\xaa\x0e\x00\x9c\x38\x0d\xf0\xfe\xb5\x7d\x5e\xb1\xed\x8b\x40\xcd\xf2\x44\x6c\x8a\x42\x4d\x48\xeb\xe5\x89\x7d\x92\x2e\x42\xf2\x5b\x98\x83\x63\x95\xdb\x51\x3e\x49\x04\xfc\x25\x21\xac\xca\x53\x03\xac\x57\x64\x54\xe6\x02\xd4\xb3\x55\x20\x73\x68\x18\xa8\x46\x83\x79\x00\x0f\x8f\x30\xf9\xe3\x7d\x05\xc7\xbc\x1f\x16\xec\xc9\xac\xb0\xf8\xc6\x30\x96\x67\x75\x57\x5a\x40\x64\xa7\x70\xf7\xb5\x3f\x7c\xa7\xcc\xc0\x0b\xdb\x71\x19\x5d\x53\xcf\x21\xb7\x48\x20\x66\x52\x20\xc0\x57\x85\xb2\x25\xb2\xcb\xe2\x85\x5a\x5a\xe4\x0b\x9b\xce\x9e\x1e\xdd\xb7\x8a\x9e\x4c\x08\x25\xfb\x47\xff\xf9\xe6\xf3\x7a\x95\x54\xd9\xee\x04\x6c\xd1\x8a\x30\x1d\xae\xe2\x6e\xc5\xee\xf4\xf1\x01\x25\x6e\x0c\x59\xdf\x35\xcb\xb5\x19\x2f\x80\x16\x2b\xa3\x93\x7d\xbf\x36\x19\x98\x7b\xf1\x8b\x1d\x69\xd6\xe6\xe0\xc4\x2f\xea\xd7\xf0\xed\x6d\x2c\xf5\x4d\xa7\x8f\x87\x49\x60\xe4\x45\xa1\x08\xb7\xbb\x09\x87\xcb\x94\x27\xe1\x02\x3a\x1c\x85\xc2\x72\xc1\x0b\xca\x78\x1f\x98\xc7\x6e\x10\x67\x39\x24\xe6\x58\xe7\x36\xcc\x54\x4a\xfc\x0c\xde\xcd\xe8\xe5\x8d\x14\xa1\x8e\x4b\x74\x21\x50\x75\x1a\x46\xa1\x4d\x90\xd7\x10\xa9\xea\x82\x26\x6e\x46\x65\x4b\xbc\x15\x36\x85\xc1\x95\x99\x8b\x09\x23\xcc\xe3\x13\x50\xb7\x9b\x20\x39\xf2\x38\x55\xdc\x3b\xa1\x14\x38\xb1\x5c\xc0\x3a\xaa\xd9\xd3\x1b\x58\x19\xc4\xb4\x12\x34\xe9\x3a\x30\x61\x55\x47\x9a\x6b\xd4\x5d\xf8\x4e\x1c\xf9\xe8\xd8\xea\x0e\x89\x6d\x92\x88\xd2\xe4\x8d\x87\x30\xd8\x6b\xf8\x99\x7c\x62\xa8\x37\x8a\xd9\x59\x25\x67\x2d\xef\xba\xa1\xc9\xcb\xa3\x15\xce\x1e\x64\xf8\x61\x6b\x17\x4b\x88\xc5\x7a\xb7\x80\x74\x8a\xe9\x6c\xdb\xe3\x6d\xc4\xd7\x90\x54\xfd\xd7\xbe\xc3\xb4\x0b\x1f\xc7\xb1\x26\x6e\x19\x7c\xa7\xfe\x41\xd0\x74\x3a\xd9\xa8\xa1\x04\x30\xa4\xe1\xcc\xed\xf8\xaa\x48\x62\x3f\xff\xa2\xbf\xd3\x30\x36\x4b\x0e\x3a\xa1\xdb\x7d\x9b\x9a\xa4\xca\x8e\x17\xd9\x3c\x91\x6d\x6a\xfe\x57\xd3\x3f\x7b\x05\x9b\x67\x0b\xba\x34\xbc\xee\xd5\x11\x65\xff\xc0\xdc\xa6\xaf\x53\x2e\xb3\xef\x97\x6b\x29\x6e\x97\x5c\xe2\x5b\x40\xec\x63\x9c\xa4\x35\x93\xb2\x59\x46\xba\x82\xa8\x19\xe8\xf1\xaf\xa7\xdf\xa3\x45\xf3\x5c\xc0\x8b\xf3\xe7\x73\x02\x88\x6c\xaf\x08\xe1\x43\x24\x45\xf6\x7d\xc5\x9c\x69\x85\xe7\xf8\xc9\xbb\xc8\xa6\x8a\x39\x25\xe2\x0c\x14\xbd\xd2\xb6\x92\x2b\xc9\x24\x32\x1f\x58\x23\xdf\x51\x18\x34\xf2\xa2\x9e\x4d\x7e\x32\x0f\x96\x3c\x7a\xd3\xa1\x52\x22\xaf\xa2\x2a\x98\x37\x51\x47\xfb\x3f\x43\x33\xf5\xb8\xc1\x39\xa1\x04\x5d\x3c\xc6\xde\x57\xb2\x4a\x23\x41\xcc\x16\xb3\xdf\xe0\x69\xa3\x58\x65\xb8\x52\xc2\xf8\x4f\xd4\xec\x28\xec\x17\x8f\xd0\xb9\xff\x32\xe1\xe5\x29\xbf\x3d\xc9\x69\xae\x17\xdb\x13\x96\xc2\xcb\xa7\x4b\x6a\xd4\xb8\x32\x07\xea\xb4\xb1\x2c\x93\x60\x4d\xa7\xeb\xbd\x03\x9b\xae\x1e\xa1\xcb\xf5\xc9\x79\x87\x0e\x8e\x87\xae\xc0\xc8\x83\xe8\xb9\x52\xbe\xc1\x98\x67\x60\x40\x3b\x19\x3e\x16\x5f\xff\x20\xff\x51\x60\xa4\x34\xbd\x25\xa7\xcb\xec\xc4\xf8\xb9\xb7\xa5\x5b\x41\x29\x6f\x96\x09\x34\x2b\x8a\x76\xaf\xb6\xab\x98\x91\xbd\x17\x42\x70\x8a\x99\xf3\x4a\x56\xef\xc1\x39\x20\x0f\x1b\x5f\xe1\x57\xbb\x27\x62\x40\xe7\xe2\xa0\xa0\xf4\xea\x59\x1a\xc0\xb2\x4a\x21\xcc\xd1\xcc\x4e\xf6\xc8\xba\xa0\x82\xde\xa2\x3f\xe5\x49\x90\x1e\xcb\xe7\x8c\x47\x4b\x27\x54\x33\x49\x05\x9f\x91\x15\xa5\x91\x39\xe4\x5e\xe6\xf9\xff\x40\x52\x38\x54\x22\xc9\x38\x61\x59\x4f\xe9\x89\xfa\x84\xd2\x82\x1d\x63\xea\x55\xd9\x32\x7d\x70\x19\xe9\x12\xf7\xeb\xae\xbf\x24\xbf\x21\x16\xcc\xc1\xa6\xa2\x83\xc3\x97\xba\x3c\xaa\x5e\xa8\xd4\x4a\xc7\x36\x78\x3f\xb4\xef\x27\x15\x95\x70\xae\xf5\x11\x56\xe9\x0e\x69\x4f\xaa\x6d\x1a\x9e\x19\x21\xd8\xd1\xb1\x87\xc3\xea\x36\x7f\x33\x08\xcf\xe1\xb7\x41\x2a\x55\x8b\xf3\xce\x7f\xfe\xf3\x0f\x89\x27\xe4\x96\x12\x6e\x3e\xfe\x17\x1f\x4b\xee\xf7\x1b\xae\x80\xd3\x63\xf5\xb7\x3a\xa8\xf7\xa9\x12\x82\x42\x6c\xa3\xc7\xf0\x88\xe4\x25\x56\xc5\x65\x45\xbd\x0d\xe1\x96\x96\xd7\xb6\x07\x37\x65\x80\x08\xfd\x63\xc2\x3f\xef\xdc\xf5\x5a\x33\x58\x46\xb1\xa1\xda\xba\x80\x40\x4b\x4f\xc4\x87\xd1\x9f\x32\xe3\xad\x86\x81\x39\x0f\x2c\x57\xa2\x09\x74\x24\x4f\xd1\x12\xdd\x0c\x88\x30\xe4\x11\x60\xd5\xd7\x40\x59\x95\x13\xae\x0c\x03\xa9\x08\xa0\x08\xeb\x41\x19\x68\xd5\x3f\x5b\x9c\x1d\x8d\xd4\xf3\xf0\x36\x55\x92\xe6\x26\xf4\xf2\x01\x68\x52\x1a\x58\x73\x97\x67\xb1\x8c\xf2\x40\x0c\xa6\xf6\x97\xcc\xea\x44\x63\xaa\x90\x38\x90\x92\xf3\x5e\xca\x8a\x4b\x1b\x7c\x5d\xa0\x42\x83\xa6\x7b\x0f\xb1\x3f\x36\x04\x73\x76\xbf\x35\x91\xae\xbd\x37\xab\xf5\x08\xb3\x66\xf5\xb6\xf5\x44\x2f\x41\xc0\x57\x2f\xc8\xea\x15\xb5\xd9\x2c\xc3\x47\x9d\x01\x8e\x57\xd7\x2d\xbc\x1b\x03\x71\x0d\xae\x0a\x3e\x27\xf9\x2a\x6d\x96\xf0\x19\x2b\x7d\x63\xaf\x28\x27\xe6\x93\x92\x6c\x08\xf1\x30\x39\xe8\xf8\xc9\xec\x97\xd5\xff\xb3\x4e\x5e\xc2\x5f\x17\x55\x96\x4d\xf0\x48\xd2\x2f\x48\xee\xd1\x75\x6b\xf1\x66\x0c\x61\x9f\xb1\xa0\x36\x90\x1f\xd9\xad\x59\x04\xee\x35\x4e\x90\x17\x4b\x12\xee\x8d\x44\x99\xe1\x8f\x69\x9f\x6f\x8b\xdc\xfa\x19\x59\xb5\xad\xdb\xa3\xf4\x0e\xeb\xc7\x27\x59\x4c\x7d\x26\x7f\x5f\x12\x3e\xd2\x5d\xb5\x0e\xb9\x82\x88\xc2\xd5\x14\x16\xa1\x20\x59\x7f\x4e\xc0\xeb\xaa\x08\xa9\xf1\xaf\xa7\xa9\x2d\x63\xde\x95\x41\xd1\xd1\x13\xc8\xd6\x45\xbf\x02\x79\xdb\x6e\x7e\x1d\x0a\xe7\x1b\x78\x5e\x47\xe1\x40\x63\xec\xfb\x14\x86\x04\xd4\xb9\xe2\xba\x9a\xc9\x07\x44\xb6\xbf\xaa\xb6\x37\xe3\xe1\x5d\x4e\xea\x24\xcb\x4e\x9c\x76\xd8\xef\xa7\x50\xa7\xbe\x5c\x52\x41\xa4\x6c\x59\x6f\xd3\x96\x88\xb0\xdd\x52\xe5\x40\x64\x1c\x3f\x98\xd7\x09\x5c\x63\x47\xdd\xeb\xd3\x1c\xce\x61\x93\x80\x46\x07\xd3\x4f\xf8\x2f\x3e\x0d\xcc\xc9\x81\xa6\x8e\x0d\x69\x0a\x8b\x80\x6f\xf7\x57\xbb\x11", 4096); syscall(SYS_ioctl, (intptr_t)r[2], 0xc0f24413, 0x100005c0); *(uint8_t*)0x10000000 = 0; *(uint8_t*)0x10000001 = 0; *(uint8_t*)0x10000002 = 0; *(uint8_t*)0x10000003 = 0; *(uint8_t*)0x10000004 = 0; *(uint8_t*)0x10000005 = 0; *(uint8_t*)0x10000006 = -1; *(uint8_t*)0x10000007 = -1; *(uint8_t*)0x10000008 = -1; *(uint8_t*)0x10000009 = -1; *(uint8_t*)0x1000000a = -1; *(uint8_t*)0x1000000b = -1; *(uint16_t*)0x1000000c = htobe16(0x8100); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 1, 0, 3); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 1, 3, 1); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 4, 4, 12); *(uint16_t*)0x10000010 = htobe16(0x806); *(uint16_t*)0x10000012 = htobe16(1); *(uint16_t*)0x10000014 = htobe16(0x800); *(uint8_t*)0x10000016 = 6; *(uint8_t*)0x10000017 = 4; *(uint16_t*)0x10000018 = htobe16(9); *(uint8_t*)0x1000001a = 0xaa; *(uint8_t*)0x1000001b = 0xaa; *(uint8_t*)0x1000001c = 0xaa; *(uint8_t*)0x1000001d = 0xaa; *(uint8_t*)0x1000001e = 0xaa; *(uint8_t*)0x1000001f = 0xbb; *(uint32_t*)0x10000020 = htobe32(0xe0000001); *(uint8_t*)0x10000024 = 0xaa; *(uint8_t*)0x10000025 = 0xaa; *(uint8_t*)0x10000026 = 0xaa; *(uint8_t*)0x10000027 = 0xaa; *(uint8_t*)0x10000028 = 0xaa; *(uint8_t*)0x10000029 = 0xbb; *(uint32_t*)0x1000002a = htobe32(-1); memcpy((void*)0x10000040, "\x0f\x5a\x60\xb0\x06\xc4\xe1\x01\x6b\xd7\x65\x2f\xc4\xe1\xf8\x11\x81\x00\x00\x00\x80\xc4\xc1\x19\x60\x18\x3e\x67\x3e\x0f\x01\xd9\xf2\xe1\xab\xf3\xee\x66\x0f\x14\x8b\xf1\xff\xff\xff", 45); syz_execute_func(0x10000040); } int main(void) { syscall(SYS_mmap, 0x10000000, 0x1000000, 7, 0x1012, -1, 0); use_temporary_dir(); do_sandbox_none(); return 0; } :197:10: error: use of undeclared identifier 'SYS_freebsd12_closefrom' syscall(SYS_freebsd12_closefrom, (intptr_t)r[1]); ^ 1 error generated. compiler invocation: clang [-o /tmp/syz-executor206988956 -DGOOS_freebsd=1 -DGOARCH_386=1 -DHOSTGOOS_freebsd=1 -x c - -m32 -O2 -pthread -Wall -Werror -Wparentheses -Wunused-const-variable -Wframe-larger-than=16384 -static -lc++ -Wno-overflow] --- FAIL: TestGenerate/freebsd/386/8 (0.54s) csource_test.go:108: opts: {Threaded:true Collide:false Repeat:true RepeatTimes:0 Procs:0 Slowdown:1 Sandbox: Fault:false FaultCall:0 FaultNth:0 Leak:false NetInjection:false NetDevices:false NetReset:false Cgroups:false BinfmtMisc:false CloseFDs:false KCSAN:false DevlinkPCI:false USB:false VhciInjection:false Wifi:false IEEE802154:false Sysctl:false UseTmpDir:true HandleSegv:false Repro:false Trace:false} program: getsockopt$inet6_sctp_SCTP_EVENT(0xffffffffffffff9c, 0x84, 0x1e, &(0x7f0000000000)={0x0, 0x4, 0x1}, &(0x7f0000000040)=0x8) getsockopt$inet6_sctp_SCTP_MAX_BURST(0xffffffffffffffff, 0x84, 0x19, &(0x7f0000000080)={0x0, 0x7fff}, &(0x7f00000000c0)=0x8) r0 = dup(0xffffffffffffffff) setsockopt$inet6_sctp_SCTP_ADAPTATION_LAYER(r0, 0x84, 0x8, &(0x7f0000000100)={0x7}, 0x4) readv(r0, &(0x7f0000000540)=[{&(0x7f0000000140)=""/149, 0x95}, {&(0x7f0000000200)=""/179, 0xb3}, {&(0x7f00000002c0)=""/172, 0xac}, {&(0x7f0000000380)=""/182, 0xb6}, {&(0x7f0000000440)=""/206, 0xce}], 0x5) thr_wake(0xffffffffffffffff) r1 = socket$inet_udplite(0x2, 0x2, 0x88) freebsd12_closefrom(r1) r2 = open(&(0x7f0000000580)='./file0\x00', 0x4, 0x40) ioctl$DIOCGETSTATE(r2, 0xc0f24413, &(0x7f00000005c0)="2a368a90b488d04ee1eccd139778043b00a6f81a3627b593b0dfce33265cda8fba8b0fa538b3e364ad1d1f7de1011c63f592a64dd0ec953f9c050f991f42d24d7bc47c4d5bf323e393605e59a1eb5bc4e948f83890911ed35b53a2b0d63db79dc21d6190f8b434d6ff85e54fb9a28a7566d1a24337e72e82acc9e518339acac7dd8960a1c9c5cb3da9e6bc0b697e9dbbc60fa8b72c3719286bf44c2e8fc8356e9125eae9bed216f349c292c989d7dcd252dfb79c4fdbdc865109f1e3cf9cd67cfa8babb7d3627ce0080910c5755c92cbb2c159172a65ea8a2085f4ce10e1436ef2f7d6f1db702a387cd35681293331bd1bdbd690274a7c372f84e4d5748791d707ee5c127eda8b84596b0c10890c881006beb38ad56d139d8c74f14f3598de551ee3a13466e67cb3d2c5fd909061522058ffbe9ae431325544c894b9841a4c253632a332c6e0d881645f90b6337db99b7fad1bd162f73d11ce5e57d5f321fb68a795c990662a35706af845b5383fe50ba8637613dd43aa7cf20020355218e060af2658866349197f30c835351bd69683baaab8be6b4da04fb35a423314fab610b8d1cf0440fedb28a5e19584ef7867bd962ba4ede513af03dda669f76c67d28fb507d5762c61d528f1cf3a7c563eee1c04106254ce3fd821c17a0defc37d79a5de7ef9352c7b411c953958d254d0d3e5ae618a68a53e45809d493c474a208ccc0f170df4836d0593b7b7ce874fa01fe0415a594f941c31f0784aad394f06b8537029555ccc73eaab0b36846fe5cc6e92db0c90a62d1d36c382c351921789dfbe0f60b13db0814aaf4fa6f813a7cf2ad12ebe1050eef92768c313718d8db202e3d1093dcf5933451efd9b72ee4ef75dfc0ea0afffb81bbee550382b6b1212cea097b709aec7c0a85799127d01376f7bd6f255732972f889b6843f615478ee23124737f813b18f3133af12b4e41e70bea058b00a5f965ed2377b48916bc2a7162adbf7bc9ca11aeaaf88c2f5229af6dd3861574a0d5d5ae482f2d7e86d172005cca565b12b199a7d81087d85776d613940b48735266d45a4ad11e168e89b893e650b984b483abb318f432f13c61f26f3deabc6b45dcf5ff4579da89a9d23251d1a6bec122cb210fc3afa89102395e1d26b14ca4180c1b6fe0b3000049550283b618ab1fd6b165855b297d9457ac54946fb99e6f0d8872db87934347b6d9a38a731bf8bd08f2a7a7d80d4cf24fa9a16c209a18494133d6dd0d292efeba7872c4d7bdfafd416e634cf90ab4dc9bccc643227a05552eee0f916ec202dcb011c8394b10996873a0a4b7aee1514f595d23289a3bf62085b0aeea0009206e7a7061ad866352241708acbcf3c2fc0fdcaaaa8b3be8e510b99e04b96ddafa9f8483b7a568c5ebaddad5677d9144a270d0444aea3c0775d241d79baea30dc4bb19a712471f112838c7525496d4a8fa66658610347d490af85305ceabf0f35ac277f2ef1b6a8e5813ce0bea587e627d725f1db1241222acd41e16c8a32bdb40778d4a10f87b1e90e006dfc03d2934589d25965240ee9c21419a2aa5bd8f3fcd3208f9b52155513a6da73468dc0703102bcca0eba18e88c19da64ab5c6bf6cb8109730153693332f7e160862719dc08175ed074f5bf2887705501331cf75254fce0e145ac2241875293036f2aa96592194073d04754c26f19e7763332b43d0287a28347d5155bacfd32628f500d9e9c04f5369f6317e606e422f98c48b11f755b2b0fdc79494a769700d35a88a330f02cab2fb7b65049e2d1e350a6e02d5d54ac7c85f268c0eaf77071d5acabed99429030d00b30c4caa21ce322d4f780e892201129ff772d22cc4d4c274b479948d22acfc1760b2917ff308e9a3aa22779bd0f453d11e0dee788dcf95b7be90c3b3b3a7fe535da503c381e346eb2a0b0e375ad726ee2a38919810d5c545edcea1b23109a3fb68e30c01cc704a9d23ae55d18cc9fdff02bd484d59f468d75a796657fdca59f55d4be7efd7378a31685334adc0cacaef9af5649da85dc6c5989cf8e2b9977a62a8ca8bc27782b1b3028a4de9a0e87dbab7879144e40a811f0b1b2880d26823c990adeb7df41116fcf6022a08d87ac7c63ecdff796dafa082e5cd85d6c3f17f8740ea1e9a0c886e0cd7074c45dbc2dc7b34c6859e06a0cee9b20ce43724a414eb77b0b804dffcc7bc44dab7fa02a3836eae396f9ede48d6deea333b0a990ebbcd1b336bb73d8e72c72e12449f1ca720a3bcd9788d1dcdde51214b771a1ca1389ebb5a05645acf97315651ae886ecd5f009a7cc62bfc49459b71fea3f8adc05d37129781ac9073eb83f1eeb1fc84a90c8316c36164259a7c24e5a200c353ebd7bf2324eff521680b218a8654b6df7b046afdc85a78cfee174a6e91978d4af6511d30799195df42886c8327dcc624c2912f83fe1bb6302ec71a8f098d5e056d89595c460062d29a5546e5ba77e0a179a848f033e11afc1a19897e83c2ab7eb58207222156767ebdb2e2426ae2c594c205da59650283b33cbf50a77d607de9e2ffe0f080fd773c7e03f20505dd0cb15cd8924cdd6b87d7f615bccd2eb47839561d79a02ca9cde0fde19b5a0c2a90bd4a0c7361bfdad5374ac42b5161115759cfa2ac08c16795ab52c84c540710b1d1d5006f2aba098c6b682a51f03ff5d79b6bce020ce726f7fa2e7685138087d609c05054a9f4c4568152e8900d866bd4a980b07d35b833647d1f4e26575d4de1c7a7ccf5cd119d6db4c72fb9c24e3a085ecdde521ff18bec6c16c931457cd8e26461d48b55c211a27ba498663b34ea0dcfd8cdfa12900fe8367abbeac8e4eb1a18036c9c1694935a573b61afc05c1265aafb6ef584e823b842764b71dca331837649a51d0c96cefec435835b8f4b5dac5d1f24be94d5378a1664efc1daf557015657adb77881c5d181cd9d1f1d3d96bf74d5167930285b6f98fef31bbef7378cf2f12c4c479f96076d8170d768dfd2fe823cd14d6d7059d75d9547ab22ada6fd1a364ae7629e6f7e466a4c8a49483e4555f6c0881fd2cee97923247f2ca839f88b1eda7c3b7c75f530c0fd60b85e8b10d4b58d7b8815bbf1e4f42a16b25225888bda247d46be3551325b606f61ce776a92f046884fd275e82d4c08761b60d698c5adde78ded62d8835a1b23b3ff96576b2c198f722e76ea22667388a44ed316ea6dc5be4bd84043572a2afa19cd9a84ef5ffc28fb0f689c4c2526cec261502f1e0af665cbdef50e3a669c0aa1364307c89d766d5869e2c9e414ca216735c01826eee4ea8bcb09b67a8dd8f7edb68536c6eefa0fa0d78f4a86bd70482d9852e48291d1e16ad11434779a27861af8192a64275084e7d9e0604c52073c3324b9577b088073ab270041d041cf5ff18831b80e00a273b6860059bec4a6c41902644ef923e890d558b5a96ef9eefe19de120735e98987a98d53a56e3226c576cd2ef486ae138ff3b62eae33ca91f8b77d3a98f583e863d4ebe53d0b3fa97c4768280593f935f6142595ed15057adf8b60148620493afeb5ff5de17b6ac26d5bbb7cf7f47132642ebe73de0051f073610b0c1eaef6749919cf0e87144c0d8f70eeabb7fe6c2e58f914e544e8be21c2f3a602d61cfcf01765e49cbcd0a6f9b1616ec56a4de6e52bc979840a842d9b2dd4b5d59d15b3ce85138bc98c1e254c84853b6726b6fdb7bc79e90d34be3dd86c4defbfac943880292fec0d995cdb5244514d11518efe79204d53c9cda4a487bf30e9ff7f286e536ac1fe9fa1a71f3eed0e47f8471e88db19fcd3e3197698969798f26d5c9c4b8a7b935a0faf395d2ba9ee8c57e13747ad4d01a2eeca7e853f9c5273fc161854c2e966f853a4888844442291ed0b3c59315f8cbae2c9a4af084d10cb4c7e640001b7f340132d80474c6daa0e009c380df0feb57d5eb1ed8b40cdf2446c8a424d48ebe5897d922e42f25b98836395db513e4904fc2521acca5303ac576454e602d4b35520736818a8468379000f8f30f9e37d05c7bc1f16ecc9acb0f8c630966775575a4064a770f7b53f7ca7ccc00bdb71195d53cf21b74820665220c05785b225b2cbe2855a5ae40b9bce9e1eddb78a9e4c0825fb47fff9e6f37a9554d9ee046cd18a301daee26ec5eef4f101256e0c59df35cbb5192f80162ba3937dbf3619987bf18b1d69d6e6e0c42fead7f0ed6d2cf54da78f874960e445a108b7bb0987cb9427e1023a1c85c272c10bca781f98c76e10673924e658e736cc544afc0cdecde8e58d14a18e4b742150751a46a14d90d710a9ea82266e46654bbc153685c195998b0923cce31350b79b2039f23855dc3ba11438b15cc03aaad9d31b5819c4b41234e93a306155479a6bd45df84e1cf9e8d8ea0e896d9288d2e48d8730d86bf8997c62a8378ad95925672defbaa1c9cba315ce1e64f8616b174b88c57ab780748ae96cdbe36dc4d79054fdd7bec3b40b1fc7b1266e197ca7fe41d0743ad9a8a10430a4e1ccedf8aa48623fffa2bfd330364b0e3aa1db7d9b9aa4ca8e17d93c916d6afe57d33f7b059b670bba34bceed51165ffc0dca6af532eb3ef976b296e975ce25b40ec639ca43593b25946ba82a819e8f1afa7dfa345f35cc08bf3e77302886caf08e1432445f67dc59c6985e7f8c9bbc8a68a3925e20c14bdd2b6922bc924321f5823df511834f2a29e4d7e320f963c7ad3a15222afa22a98375147fb3f4333f5b8c139a1045d3cc6de57b24a2341cc16b3dfe069a35865b852c2f84fd4ec28ec178fd0b9ff32e1e529bf3dc969ae17db1396c2cba74b6ad4b83207eab4b12c93604da7ebbd039bae1ea1cbf5c979870e8e87aec0c883e8b952bec1986760403b193e165fff20ff5160a434bd25a7cbecc4f8b9b7a55b41296f9609342b8a76afb6ab9891bd1742708a99f34a56efc139200f1b5fe157bb276240e7e2a0a0f4ea591ac0b24a21ccd1cc4ef6c8baa082dea23fe549901ecbe78c474b27543349059f9115a59139e45ee6f9ff4052385422c93861594fe989fa84d2821d63ea55d9327d7019e912f7ebaebf24bf2116ccc1a6a283c397ba3caa5ea8d44ac736783fb4ef27159570aef51156e90e694faa6d1a9e1921d8d1b187c3ea367f3308cfe1b7412a558bf3ce7ffef30f8927e496126e3efe171f4beef71bae80d363f5b73aa8f7a91282426ca3c7f088e42556c56545bd0de19696d7b60737658008fd63c23fefdcf55a335846b1a1daba80404b4fc487d19f32e3ad8681390f2c57a20974244fd112dd0c8830e41160d5d740599513ae0c03a908a008eb411968d53f5b9c1d8dd4f3f0365592e626f4f20168521a58739767b18cf2400ca6f697ccea4463aa90389092f35eca8a4b1b7c5da04283a67b0fb13f36047376bf3591aebd37abf508b366f5b6f5442f41c0572fc8ea15b5d92cc3479d018e57d72dbc1b03710dae0a3e27f92a6d96f0192b7d63af2827e693926c08f13039e8f8c9ec97d5ffb34e5ec25f1755964df048d22f48eed1756bf1660c619fb1a036901fd9ad5904ee354e90174b12ee8d4499e18f699f6f8bdcfa1959b5addba3f40eebc727594c7d267f5f123ed25db50eb98288c2d51416a120597f4ec0ebaa08a9f1afa7a92d63de9541d1d113c8d645bf0279db6e7e1d0ae71b785e47e14063ecfb148604d4b9e2ba9ac90744b6bfaab637e3e15d4eea24cb4e9c76d8efa750a7be5c5241a46c596fd39688b0dd52e540641c3f98d7095c6347ddebd31cce6193804607d34ff82f3e0dccc981a68e0d690a8b806ff757bb11") syz_emit_ethernet(0x2e, &(0x7f0000000000)={@empty, @broadcast, [{[], {0x8100, 0x1, 0x1, 0x4}}], {@arp={0x806, @ether_ipv4={0x1, 0x800, 0x6, 0x4, 0x9, @remote, @multicast1, @remote, @broadcast}}}}) syz_execute_func(&(0x7f0000000040)="0f5a60b006c4e1016bd7652fc4e1f8118100000080c4c11960183e673e0f01d9f2e1abf3ee660f148bf1ffffff") syz_extract_tcp_res(&(0x7f0000000080), 0x7fffffff, 0x7) csource_test.go:109: failed to build program: // autogenerated by syzkaller (https://github.com/google/syzkaller) #define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include static void kill_and_wait(int pid, int* status) { kill(pid, SIGKILL); while (waitpid(-1, status, 0) != pid) { } } static void sleep_ms(uint64_t ms) { usleep(ms * 1000); } static uint64_t current_time_ms(void) { struct timespec ts; if (clock_gettime(CLOCK_MONOTONIC, &ts)) exit(1); return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000; } static void use_temporary_dir(void) { char tmpdir_template[] = "./syzkaller.XXXXXX"; char* tmpdir = mkdtemp(tmpdir_template); if (!tmpdir) exit(1); if (chmod(tmpdir, 0777)) exit(1); if (chdir(tmpdir)) exit(1); } static void __attribute__((noinline)) remove_dir(const char* dir) { DIR* dp = opendir(dir); if (dp == NULL) { if (errno == EACCES) { if (rmdir(dir)) exit(1); return; } exit(1); } struct dirent* ep = 0; while ((ep = readdir(dp))) { if (strcmp(ep->d_name, ".") == 0 || strcmp(ep->d_name, "..") == 0) continue; char filename[FILENAME_MAX]; snprintf(filename, sizeof(filename), "%s/%s", dir, ep->d_name); struct stat st; if (lstat(filename, &st)) exit(1); if (S_ISDIR(st.st_mode)) { remove_dir(filename); continue; } if (unlink(filename)) exit(1); } closedir(dp); if (rmdir(dir)) exit(1); } static void thread_start(void* (*fn)(void*), void* arg) { pthread_t th; pthread_attr_t attr; pthread_attr_init(&attr); pthread_attr_setstacksize(&attr, 128 << 10); int i = 0; for (; i < 100; i++) { if (pthread_create(&th, &attr, fn, arg) == 0) { pthread_attr_destroy(&attr); return; } if (errno == EAGAIN) { usleep(50); continue; } break; } exit(1); } typedef struct { pthread_mutex_t mu; pthread_cond_t cv; int state; } event_t; static void event_init(event_t* ev) { if (pthread_mutex_init(&ev->mu, 0)) exit(1); if (pthread_cond_init(&ev->cv, 0)) exit(1); ev->state = 0; } static void event_reset(event_t* ev) { ev->state = 0; } static void event_set(event_t* ev) { pthread_mutex_lock(&ev->mu); if (ev->state) exit(1); ev->state = 1; pthread_mutex_unlock(&ev->mu); pthread_cond_broadcast(&ev->cv); } static void event_wait(event_t* ev) { pthread_mutex_lock(&ev->mu); while (!ev->state) pthread_cond_wait(&ev->cv, &ev->mu); pthread_mutex_unlock(&ev->mu); } static int event_isset(event_t* ev) { pthread_mutex_lock(&ev->mu); int res = ev->state; pthread_mutex_unlock(&ev->mu); return res; } static int event_timedwait(event_t* ev, uint64_t timeout) { uint64_t start = current_time_ms(); uint64_t now = start; pthread_mutex_lock(&ev->mu); for (;;) { if (ev->state) break; uint64_t remain = timeout - (now - start); struct timespec ts; ts.tv_sec = remain / 1000; ts.tv_nsec = (remain % 1000) * 1000 * 1000; pthread_cond_timedwait(&ev->cv, &ev->mu, &ts); now = current_time_ms(); if (now - start > timeout) break; } int res = ev->state; pthread_mutex_unlock(&ev->mu); return res; } #define BITMASK(bf_off,bf_len) (((1ull << (bf_len)) - 1) << (bf_off)) #define STORE_BY_BITMASK(type,htobe,addr,val,bf_off,bf_len) *(type*)(addr) = htobe((htobe(*(type*)(addr)) & ~BITMASK((bf_off), (bf_len))) | (((type)(val) << (bf_off)) & BITMASK((bf_off), (bf_len)))) static long syz_execute_func(volatile long text) { ((void (*)(void))(text))(); return 0; } struct thread_t { int created, call; event_t ready, done; }; static struct thread_t threads[16]; static void execute_call(int call); static int running; static void* thr(void* arg) { struct thread_t* th = (struct thread_t*)arg; for (;;) { event_wait(&th->ready); event_reset(&th->ready); execute_call(th->call); __atomic_fetch_sub(&running, 1, __ATOMIC_RELAXED); event_set(&th->done); } return 0; } static void execute_one(void) { int i, call, thread; for (call = 0; call < 13; call++) { for (thread = 0; thread < (int)(sizeof(threads) / sizeof(threads[0])); thread++) { struct thread_t* th = &threads[thread]; if (!th->created) { th->created = 1; event_init(&th->ready); event_init(&th->done); event_set(&th->done); thread_start(thr, th); } if (!event_isset(&th->done)) continue; event_reset(&th->done); th->call = call; __atomic_fetch_add(&running, 1, __ATOMIC_RELAXED); event_set(&th->ready); event_timedwait(&th->done, 50); break; } } for (i = 0; i < 100 && __atomic_load_n(&running, __ATOMIC_RELAXED); i++) sleep_ms(1); } static void execute_one(void); #define WAIT_FLAGS 0 static void loop(void) { int iter = 0; for (;; iter++) { char cwdbuf[32]; sprintf(cwdbuf, "./%d", iter); if (mkdir(cwdbuf, 0777)) exit(1); int pid = fork(); if (pid < 0) exit(1); if (pid == 0) { if (chdir(cwdbuf)) exit(1); execute_one(); exit(0); } int status = 0; uint64_t start = current_time_ms(); for (;;) { if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid) break; sleep_ms(1); if (current_time_ms() - start < 5000) { continue; } kill_and_wait(pid, &status); break; } remove_dir(cwdbuf); } } uint64_t r[3] = {0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff}; void execute_call(int call) { intptr_t res = 0; switch (call) { case 0: *(uint32_t*)0x10000000 = 0; *(uint16_t*)0x10000004 = 4; *(uint8_t*)0x10000006 = 1; *(uint32_t*)0x10000040 = 8; syscall(SYS_getsockopt, 0xffffff9c, 0x84, 0x1e, 0x10000000, 0x10000040); break; case 1: *(uint32_t*)0x10000080 = 0; *(uint32_t*)0x10000084 = 0x7fff; *(uint32_t*)0x100000c0 = 8; syscall(SYS_getsockopt, -1, 0x84, 0x19, 0x10000080, 0x100000c0); break; case 2: res = syscall(SYS_dup, -1); if (res != -1) r[0] = res; break; case 3: *(uint32_t*)0x10000100 = 7; syscall(SYS_setsockopt, (intptr_t)r[0], 0x84, 8, 0x10000100, 4); break; case 4: *(uint32_t*)0x10000540 = 0x10000140; *(uint32_t*)0x10000544 = 0x95; *(uint32_t*)0x10000548 = 0x10000200; *(uint32_t*)0x1000054c = 0xb3; *(uint32_t*)0x10000550 = 0x100002c0; *(uint32_t*)0x10000554 = 0xac; *(uint32_t*)0x10000558 = 0x10000380; *(uint32_t*)0x1000055c = 0xb6; *(uint32_t*)0x10000560 = 0x10000440; *(uint32_t*)0x10000564 = 0xce; syscall(SYS_readv, (intptr_t)r[0], 0x10000540, 5); break; case 5: syscall(SYS_thr_wake, -1); break; case 6: res = syscall(SYS_socket, 2, 2, 0x88); if (res != -1) r[1] = res; break; case 7: syscall(SYS_freebsd12_closefrom, (intptr_t)r[1]); break; case 8: memcpy((void*)0x10000580, "./file0\000", 8); res = syscall(SYS_open, 0x10000580, 4, 0x40); if (res != -1) r[2] = res; break; case 9: memcpy((void*)0x100005c0, "\x2a\x36\x8a\x90\xb4\x88\xd0\x4e\xe1\xec\xcd\x13\x97\x78\x04\x3b\x00\xa6\xf8\x1a\x36\x27\xb5\x93\xb0\xdf\xce\x33\x26\x5c\xda\x8f\xba\x8b\x0f\xa5\x38\xb3\xe3\x64\xad\x1d\x1f\x7d\xe1\x01\x1c\x63\xf5\x92\xa6\x4d\xd0\xec\x95\x3f\x9c\x05\x0f\x99\x1f\x42\xd2\x4d\x7b\xc4\x7c\x4d\x5b\xf3\x23\xe3\x93\x60\x5e\x59\xa1\xeb\x5b\xc4\xe9\x48\xf8\x38\x90\x91\x1e\xd3\x5b\x53\xa2\xb0\xd6\x3d\xb7\x9d\xc2\x1d\x61\x90\xf8\xb4\x34\xd6\xff\x85\xe5\x4f\xb9\xa2\x8a\x75\x66\xd1\xa2\x43\x37\xe7\x2e\x82\xac\xc9\xe5\x18\x33\x9a\xca\xc7\xdd\x89\x60\xa1\xc9\xc5\xcb\x3d\xa9\xe6\xbc\x0b\x69\x7e\x9d\xbb\xc6\x0f\xa8\xb7\x2c\x37\x19\x28\x6b\xf4\x4c\x2e\x8f\xc8\x35\x6e\x91\x25\xea\xe9\xbe\xd2\x16\xf3\x49\xc2\x92\xc9\x89\xd7\xdc\xd2\x52\xdf\xb7\x9c\x4f\xdb\xdc\x86\x51\x09\xf1\xe3\xcf\x9c\xd6\x7c\xfa\x8b\xab\xb7\xd3\x62\x7c\xe0\x08\x09\x10\xc5\x75\x5c\x92\xcb\xb2\xc1\x59\x17\x2a\x65\xea\x8a\x20\x85\xf4\xce\x10\xe1\x43\x6e\xf2\xf7\xd6\xf1\xdb\x70\x2a\x38\x7c\xd3\x56\x81\x29\x33\x31\xbd\x1b\xdb\xd6\x90\x27\x4a\x7c\x37\x2f\x84\xe4\xd5\x74\x87\x91\xd7\x07\xee\x5c\x12\x7e\xda\x8b\x84\x59\x6b\x0c\x10\x89\x0c\x88\x10\x06\xbe\xb3\x8a\xd5\x6d\x13\x9d\x8c\x74\xf1\x4f\x35\x98\xde\x55\x1e\xe3\xa1\x34\x66\xe6\x7c\xb3\xd2\xc5\xfd\x90\x90\x61\x52\x20\x58\xff\xbe\x9a\xe4\x31\x32\x55\x44\xc8\x94\xb9\x84\x1a\x4c\x25\x36\x32\xa3\x32\xc6\xe0\xd8\x81\x64\x5f\x90\xb6\x33\x7d\xb9\x9b\x7f\xad\x1b\xd1\x62\xf7\x3d\x11\xce\x5e\x57\xd5\xf3\x21\xfb\x68\xa7\x95\xc9\x90\x66\x2a\x35\x70\x6a\xf8\x45\xb5\x38\x3f\xe5\x0b\xa8\x63\x76\x13\xdd\x43\xaa\x7c\xf2\x00\x20\x35\x52\x18\xe0\x60\xaf\x26\x58\x86\x63\x49\x19\x7f\x30\xc8\x35\x35\x1b\xd6\x96\x83\xba\xaa\xb8\xbe\x6b\x4d\xa0\x4f\xb3\x5a\x42\x33\x14\xfa\xb6\x10\xb8\xd1\xcf\x04\x40\xfe\xdb\x28\xa5\xe1\x95\x84\xef\x78\x67\xbd\x96\x2b\xa4\xed\xe5\x13\xaf\x03\xdd\xa6\x69\xf7\x6c\x67\xd2\x8f\xb5\x07\xd5\x76\x2c\x61\xd5\x28\xf1\xcf\x3a\x7c\x56\x3e\xee\x1c\x04\x10\x62\x54\xce\x3f\xd8\x21\xc1\x7a\x0d\xef\xc3\x7d\x79\xa5\xde\x7e\xf9\x35\x2c\x7b\x41\x1c\x95\x39\x58\xd2\x54\xd0\xd3\xe5\xae\x61\x8a\x68\xa5\x3e\x45\x80\x9d\x49\x3c\x47\x4a\x20\x8c\xcc\x0f\x17\x0d\xf4\x83\x6d\x05\x93\xb7\xb7\xce\x87\x4f\xa0\x1f\xe0\x41\x5a\x59\x4f\x94\x1c\x31\xf0\x78\x4a\xad\x39\x4f\x06\xb8\x53\x70\x29\x55\x5c\xcc\x73\xea\xab\x0b\x36\x84\x6f\xe5\xcc\x6e\x92\xdb\x0c\x90\xa6\x2d\x1d\x36\xc3\x82\xc3\x51\x92\x17\x89\xdf\xbe\x0f\x60\xb1\x3d\xb0\x81\x4a\xaf\x4f\xa6\xf8\x13\xa7\xcf\x2a\xd1\x2e\xbe\x10\x50\xee\xf9\x27\x68\xc3\x13\x71\x8d\x8d\xb2\x02\xe3\xd1\x09\x3d\xcf\x59\x33\x45\x1e\xfd\x9b\x72\xee\x4e\xf7\x5d\xfc\x0e\xa0\xaf\xff\xb8\x1b\xbe\xe5\x50\x38\x2b\x6b\x12\x12\xce\xa0\x97\xb7\x09\xae\xc7\xc0\xa8\x57\x99\x12\x7d\x01\x37\x6f\x7b\xd6\xf2\x55\x73\x29\x72\xf8\x89\xb6\x84\x3f\x61\x54\x78\xee\x23\x12\x47\x37\xf8\x13\xb1\x8f\x31\x33\xaf\x12\xb4\xe4\x1e\x70\xbe\xa0\x58\xb0\x0a\x5f\x96\x5e\xd2\x37\x7b\x48\x91\x6b\xc2\xa7\x16\x2a\xdb\xf7\xbc\x9c\xa1\x1a\xea\xaf\x88\xc2\xf5\x22\x9a\xf6\xdd\x38\x61\x57\x4a\x0d\x5d\x5a\xe4\x82\xf2\xd7\xe8\x6d\x17\x20\x05\xcc\xa5\x65\xb1\x2b\x19\x9a\x7d\x81\x08\x7d\x85\x77\x6d\x61\x39\x40\xb4\x87\x35\x26\x6d\x45\xa4\xad\x11\xe1\x68\xe8\x9b\x89\x3e\x65\x0b\x98\x4b\x48\x3a\xbb\x31\x8f\x43\x2f\x13\xc6\x1f\x26\xf3\xde\xab\xc6\xb4\x5d\xcf\x5f\xf4\x57\x9d\xa8\x9a\x9d\x23\x25\x1d\x1a\x6b\xec\x12\x2c\xb2\x10\xfc\x3a\xfa\x89\x10\x23\x95\xe1\xd2\x6b\x14\xca\x41\x80\xc1\xb6\xfe\x0b\x30\x00\x04\x95\x50\x28\x3b\x61\x8a\xb1\xfd\x6b\x16\x58\x55\xb2\x97\xd9\x45\x7a\xc5\x49\x46\xfb\x99\xe6\xf0\xd8\x87\x2d\xb8\x79\x34\x34\x7b\x6d\x9a\x38\xa7\x31\xbf\x8b\xd0\x8f\x2a\x7a\x7d\x80\xd4\xcf\x24\xfa\x9a\x16\xc2\x09\xa1\x84\x94\x13\x3d\x6d\xd0\xd2\x92\xef\xeb\xa7\x87\x2c\x4d\x7b\xdf\xaf\xd4\x16\xe6\x34\xcf\x90\xab\x4d\xc9\xbc\xcc\x64\x32\x27\xa0\x55\x52\xee\xe0\xf9\x16\xec\x20\x2d\xcb\x01\x1c\x83\x94\xb1\x09\x96\x87\x3a\x0a\x4b\x7a\xee\x15\x14\xf5\x95\xd2\x32\x89\xa3\xbf\x62\x08\x5b\x0a\xee\xa0\x00\x92\x06\xe7\xa7\x06\x1a\xd8\x66\x35\x22\x41\x70\x8a\xcb\xcf\x3c\x2f\xc0\xfd\xca\xaa\xa8\xb3\xbe\x8e\x51\x0b\x99\xe0\x4b\x96\xdd\xaf\xa9\xf8\x48\x3b\x7a\x56\x8c\x5e\xba\xdd\xad\x56\x77\xd9\x14\x4a\x27\x0d\x04\x44\xae\xa3\xc0\x77\x5d\x24\x1d\x79\xba\xea\x30\xdc\x4b\xb1\x9a\x71\x24\x71\xf1\x12\x83\x8c\x75\x25\x49\x6d\x4a\x8f\xa6\x66\x58\x61\x03\x47\xd4\x90\xaf\x85\x30\x5c\xea\xbf\x0f\x35\xac\x27\x7f\x2e\xf1\xb6\xa8\xe5\x81\x3c\xe0\xbe\xa5\x87\xe6\x27\xd7\x25\xf1\xdb\x12\x41\x22\x2a\xcd\x41\xe1\x6c\x8a\x32\xbd\xb4\x07\x78\xd4\xa1\x0f\x87\xb1\xe9\x0e\x00\x6d\xfc\x03\xd2\x93\x45\x89\xd2\x59\x65\x24\x0e\xe9\xc2\x14\x19\xa2\xaa\x5b\xd8\xf3\xfc\xd3\x20\x8f\x9b\x52\x15\x55\x13\xa6\xda\x73\x46\x8d\xc0\x70\x31\x02\xbc\xca\x0e\xba\x18\xe8\x8c\x19\xda\x64\xab\x5c\x6b\xf6\xcb\x81\x09\x73\x01\x53\x69\x33\x32\xf7\xe1\x60\x86\x27\x19\xdc\x08\x17\x5e\xd0\x74\xf5\xbf\x28\x87\x70\x55\x01\x33\x1c\xf7\x52\x54\xfc\xe0\xe1\x45\xac\x22\x41\x87\x52\x93\x03\x6f\x2a\xa9\x65\x92\x19\x40\x73\xd0\x47\x54\xc2\x6f\x19\xe7\x76\x33\x32\xb4\x3d\x02\x87\xa2\x83\x47\xd5\x15\x5b\xac\xfd\x32\x62\x8f\x50\x0d\x9e\x9c\x04\xf5\x36\x9f\x63\x17\xe6\x06\xe4\x22\xf9\x8c\x48\xb1\x1f\x75\x5b\x2b\x0f\xdc\x79\x49\x4a\x76\x97\x00\xd3\x5a\x88\xa3\x30\xf0\x2c\xab\x2f\xb7\xb6\x50\x49\xe2\xd1\xe3\x50\xa6\xe0\x2d\x5d\x54\xac\x7c\x85\xf2\x68\xc0\xea\xf7\x70\x71\xd5\xac\xab\xed\x99\x42\x90\x30\xd0\x0b\x30\xc4\xca\xa2\x1c\xe3\x22\xd4\xf7\x80\xe8\x92\x20\x11\x29\xff\x77\x2d\x22\xcc\x4d\x4c\x27\x4b\x47\x99\x48\xd2\x2a\xcf\xc1\x76\x0b\x29\x17\xff\x30\x8e\x9a\x3a\xa2\x27\x79\xbd\x0f\x45\x3d\x11\xe0\xde\xe7\x88\xdc\xf9\x5b\x7b\xe9\x0c\x3b\x3b\x3a\x7f\xe5\x35\xda\x50\x3c\x38\x1e\x34\x6e\xb2\xa0\xb0\xe3\x75\xad\x72\x6e\xe2\xa3\x89\x19\x81\x0d\x5c\x54\x5e\xdc\xea\x1b\x23\x10\x9a\x3f\xb6\x8e\x30\xc0\x1c\xc7\x04\xa9\xd2\x3a\xe5\x5d\x18\xcc\x9f\xdf\xf0\x2b\xd4\x84\xd5\x9f\x46\x8d\x75\xa7\x96\x65\x7f\xdc\xa5\x9f\x55\xd4\xbe\x7e\xfd\x73\x78\xa3\x16\x85\x33\x4a\xdc\x0c\xac\xae\xf9\xaf\x56\x49\xda\x85\xdc\x6c\x59\x89\xcf\x8e\x2b\x99\x77\xa6\x2a\x8c\xa8\xbc\x27\x78\x2b\x1b\x30\x28\xa4\xde\x9a\x0e\x87\xdb\xab\x78\x79\x14\x4e\x40\xa8\x11\xf0\xb1\xb2\x88\x0d\x26\x82\x3c\x99\x0a\xde\xb7\xdf\x41\x11\x6f\xcf\x60\x22\xa0\x8d\x87\xac\x7c\x63\xec\xdf\xf7\x96\xda\xfa\x08\x2e\x5c\xd8\x5d\x6c\x3f\x17\xf8\x74\x0e\xa1\xe9\xa0\xc8\x86\xe0\xcd\x70\x74\xc4\x5d\xbc\x2d\xc7\xb3\x4c\x68\x59\xe0\x6a\x0c\xee\x9b\x20\xce\x43\x72\x4a\x41\x4e\xb7\x7b\x0b\x80\x4d\xff\xcc\x7b\xc4\x4d\xab\x7f\xa0\x2a\x38\x36\xea\xe3\x96\xf9\xed\xe4\x8d\x6d\xee\xa3\x33\xb0\xa9\x90\xeb\xbc\xd1\xb3\x36\xbb\x73\xd8\xe7\x2c\x72\xe1\x24\x49\xf1\xca\x72\x0a\x3b\xcd\x97\x88\xd1\xdc\xdd\xe5\x12\x14\xb7\x71\xa1\xca\x13\x89\xeb\xb5\xa0\x56\x45\xac\xf9\x73\x15\x65\x1a\xe8\x86\xec\xd5\xf0\x09\xa7\xcc\x62\xbf\xc4\x94\x59\xb7\x1f\xea\x3f\x8a\xdc\x05\xd3\x71\x29\x78\x1a\xc9\x07\x3e\xb8\x3f\x1e\xeb\x1f\xc8\x4a\x90\xc8\x31\x6c\x36\x16\x42\x59\xa7\xc2\x4e\x5a\x20\x0c\x35\x3e\xbd\x7b\xf2\x32\x4e\xff\x52\x16\x80\xb2\x18\xa8\x65\x4b\x6d\xf7\xb0\x46\xaf\xdc\x85\xa7\x8c\xfe\xe1\x74\xa6\xe9\x19\x78\xd4\xaf\x65\x11\xd3\x07\x99\x19\x5d\xf4\x28\x86\xc8\x32\x7d\xcc\x62\x4c\x29\x12\xf8\x3f\xe1\xbb\x63\x02\xec\x71\xa8\xf0\x98\xd5\xe0\x56\xd8\x95\x95\xc4\x60\x06\x2d\x29\xa5\x54\x6e\x5b\xa7\x7e\x0a\x17\x9a\x84\x8f\x03\x3e\x11\xaf\xc1\xa1\x98\x97\xe8\x3c\x2a\xb7\xeb\x58\x20\x72\x22\x15\x67\x67\xeb\xdb\x2e\x24\x26\xae\x2c\x59\x4c\x20\x5d\xa5\x96\x50\x28\x3b\x33\xcb\xf5\x0a\x77\xd6\x07\xde\x9e\x2f\xfe\x0f\x08\x0f\xd7\x73\xc7\xe0\x3f\x20\x50\x5d\xd0\xcb\x15\xcd\x89\x24\xcd\xd6\xb8\x7d\x7f\x61\x5b\xcc\xd2\xeb\x47\x83\x95\x61\xd7\x9a\x02\xca\x9c\xde\x0f\xde\x19\xb5\xa0\xc2\xa9\x0b\xd4\xa0\xc7\x36\x1b\xfd\xad\x53\x74\xac\x42\xb5\x16\x11\x15\x75\x9c\xfa\x2a\xc0\x8c\x16\x79\x5a\xb5\x2c\x84\xc5\x40\x71\x0b\x1d\x1d\x50\x06\xf2\xab\xa0\x98\xc6\xb6\x82\xa5\x1f\x03\xff\x5d\x79\xb6\xbc\xe0\x20\xce\x72\x6f\x7f\xa2\xe7\x68\x51\x38\x08\x7d\x60\x9c\x05\x05\x4a\x9f\x4c\x45\x68\x15\x2e\x89\x00\xd8\x66\xbd\x4a\x98\x0b\x07\xd3\x5b\x83\x36\x47\xd1\xf4\xe2\x65\x75\xd4\xde\x1c\x7a\x7c\xcf\x5c\xd1\x19\xd6\xdb\x4c\x72\xfb\x9c\x24\xe3\xa0\x85\xec\xdd\xe5\x21\xff\x18\xbe\xc6\xc1\x6c\x93\x14\x57\xcd\x8e\x26\x46\x1d\x48\xb5\x5c\x21\x1a\x27\xba\x49\x86\x63\xb3\x4e\xa0\xdc\xfd\x8c\xdf\xa1\x29\x00\xfe\x83\x67\xab\xbe\xac\x8e\x4e\xb1\xa1\x80\x36\xc9\xc1\x69\x49\x35\xa5\x73\xb6\x1a\xfc\x05\xc1\x26\x5a\xaf\xb6\xef\x58\x4e\x82\x3b\x84\x27\x64\xb7\x1d\xca\x33\x18\x37\x64\x9a\x51\xd0\xc9\x6c\xef\xec\x43\x58\x35\xb8\xf4\xb5\xda\xc5\xd1\xf2\x4b\xe9\x4d\x53\x78\xa1\x66\x4e\xfc\x1d\xaf\x55\x70\x15\x65\x7a\xdb\x77\x88\x1c\x5d\x18\x1c\xd9\xd1\xf1\xd3\xd9\x6b\xf7\x4d\x51\x67\x93\x02\x85\xb6\xf9\x8f\xef\x31\xbb\xef\x73\x78\xcf\x2f\x12\xc4\xc4\x79\xf9\x60\x76\xd8\x17\x0d\x76\x8d\xfd\x2f\xe8\x23\xcd\x14\xd6\xd7\x05\x9d\x75\xd9\x54\x7a\xb2\x2a\xda\x6f\xd1\xa3\x64\xae\x76\x29\xe6\xf7\xe4\x66\xa4\xc8\xa4\x94\x83\xe4\x55\x5f\x6c\x08\x81\xfd\x2c\xee\x97\x92\x32\x47\xf2\xca\x83\x9f\x88\xb1\xed\xa7\xc3\xb7\xc7\x5f\x53\x0c\x0f\xd6\x0b\x85\xe8\xb1\x0d\x4b\x58\xd7\xb8\x81\x5b\xbf\x1e\x4f\x42\xa1\x6b\x25\x22\x58\x88\xbd\xa2\x47\xd4\x6b\xe3\x55\x13\x25\xb6\x06\xf6\x1c\xe7\x76\xa9\x2f\x04\x68\x84\xfd\x27\x5e\x82\xd4\xc0\x87\x61\xb6\x0d\x69\x8c\x5a\xdd\xe7\x8d\xed\x62\xd8\x83\x5a\x1b\x23\xb3\xff\x96\x57\x6b\x2c\x19\x8f\x72\x2e\x76\xea\x22\x66\x73\x88\xa4\x4e\xd3\x16\xea\x6d\xc5\xbe\x4b\xd8\x40\x43\x57\x2a\x2a\xfa\x19\xcd\x9a\x84\xef\x5f\xfc\x28\xfb\x0f\x68\x9c\x4c\x25\x26\xce\xc2\x61\x50\x2f\x1e\x0a\xf6\x65\xcb\xde\xf5\x0e\x3a\x66\x9c\x0a\xa1\x36\x43\x07\xc8\x9d\x76\x6d\x58\x69\xe2\xc9\xe4\x14\xca\x21\x67\x35\xc0\x18\x26\xee\xe4\xea\x8b\xcb\x09\xb6\x7a\x8d\xd8\xf7\xed\xb6\x85\x36\xc6\xee\xfa\x0f\xa0\xd7\x8f\x4a\x86\xbd\x70\x48\x2d\x98\x52\xe4\x82\x91\xd1\xe1\x6a\xd1\x14\x34\x77\x9a\x27\x86\x1a\xf8\x19\x2a\x64\x27\x50\x84\xe7\xd9\xe0\x60\x4c\x52\x07\x3c\x33\x24\xb9\x57\x7b\x08\x80\x73\xab\x27\x00\x41\xd0\x41\xcf\x5f\xf1\x88\x31\xb8\x0e\x00\xa2\x73\xb6\x86\x00\x59\xbe\xc4\xa6\xc4\x19\x02\x64\x4e\xf9\x23\xe8\x90\xd5\x58\xb5\xa9\x6e\xf9\xee\xfe\x19\xde\x12\x07\x35\xe9\x89\x87\xa9\x8d\x53\xa5\x6e\x32\x26\xc5\x76\xcd\x2e\xf4\x86\xae\x13\x8f\xf3\xb6\x2e\xae\x33\xca\x91\xf8\xb7\x7d\x3a\x98\xf5\x83\xe8\x63\xd4\xeb\xe5\x3d\x0b\x3f\xa9\x7c\x47\x68\x28\x05\x93\xf9\x35\xf6\x14\x25\x95\xed\x15\x05\x7a\xdf\x8b\x60\x14\x86\x20\x49\x3a\xfe\xb5\xff\x5d\xe1\x7b\x6a\xc2\x6d\x5b\xbb\x7c\xf7\xf4\x71\x32\x64\x2e\xbe\x73\xde\x00\x51\xf0\x73\x61\x0b\x0c\x1e\xae\xf6\x74\x99\x19\xcf\x0e\x87\x14\x4c\x0d\x8f\x70\xee\xab\xb7\xfe\x6c\x2e\x58\xf9\x14\xe5\x44\xe8\xbe\x21\xc2\xf3\xa6\x02\xd6\x1c\xfc\xf0\x17\x65\xe4\x9c\xbc\xd0\xa6\xf9\xb1\x61\x6e\xc5\x6a\x4d\xe6\xe5\x2b\xc9\x79\x84\x0a\x84\x2d\x9b\x2d\xd4\xb5\xd5\x9d\x15\xb3\xce\x85\x13\x8b\xc9\x8c\x1e\x25\x4c\x84\x85\x3b\x67\x26\xb6\xfd\xb7\xbc\x79\xe9\x0d\x34\xbe\x3d\xd8\x6c\x4d\xef\xbf\xac\x94\x38\x80\x29\x2f\xec\x0d\x99\x5c\xdb\x52\x44\x51\x4d\x11\x51\x8e\xfe\x79\x20\x4d\x53\xc9\xcd\xa4\xa4\x87\xbf\x30\xe9\xff\x7f\x28\x6e\x53\x6a\xc1\xfe\x9f\xa1\xa7\x1f\x3e\xed\x0e\x47\xf8\x47\x1e\x88\xdb\x19\xfc\xd3\xe3\x19\x76\x98\x96\x97\x98\xf2\x6d\x5c\x9c\x4b\x8a\x7b\x93\x5a\x0f\xaf\x39\x5d\x2b\xa9\xee\x8c\x57\xe1\x37\x47\xad\x4d\x01\xa2\xee\xca\x7e\x85\x3f\x9c\x52\x73\xfc\x16\x18\x54\xc2\xe9\x66\xf8\x53\xa4\x88\x88\x44\x44\x22\x91\xed\x0b\x3c\x59\x31\x5f\x8c\xba\xe2\xc9\xa4\xaf\x08\x4d\x10\xcb\x4c\x7e\x64\x00\x01\xb7\xf3\x40\x13\x2d\x80\x47\x4c\x6d\xaa\x0e\x00\x9c\x38\x0d\xf0\xfe\xb5\x7d\x5e\xb1\xed\x8b\x40\xcd\xf2\x44\x6c\x8a\x42\x4d\x48\xeb\xe5\x89\x7d\x92\x2e\x42\xf2\x5b\x98\x83\x63\x95\xdb\x51\x3e\x49\x04\xfc\x25\x21\xac\xca\x53\x03\xac\x57\x64\x54\xe6\x02\xd4\xb3\x55\x20\x73\x68\x18\xa8\x46\x83\x79\x00\x0f\x8f\x30\xf9\xe3\x7d\x05\xc7\xbc\x1f\x16\xec\xc9\xac\xb0\xf8\xc6\x30\x96\x67\x75\x57\x5a\x40\x64\xa7\x70\xf7\xb5\x3f\x7c\xa7\xcc\xc0\x0b\xdb\x71\x19\x5d\x53\xcf\x21\xb7\x48\x20\x66\x52\x20\xc0\x57\x85\xb2\x25\xb2\xcb\xe2\x85\x5a\x5a\xe4\x0b\x9b\xce\x9e\x1e\xdd\xb7\x8a\x9e\x4c\x08\x25\xfb\x47\xff\xf9\xe6\xf3\x7a\x95\x54\xd9\xee\x04\x6c\xd1\x8a\x30\x1d\xae\xe2\x6e\xc5\xee\xf4\xf1\x01\x25\x6e\x0c\x59\xdf\x35\xcb\xb5\x19\x2f\x80\x16\x2b\xa3\x93\x7d\xbf\x36\x19\x98\x7b\xf1\x8b\x1d\x69\xd6\xe6\xe0\xc4\x2f\xea\xd7\xf0\xed\x6d\x2c\xf5\x4d\xa7\x8f\x87\x49\x60\xe4\x45\xa1\x08\xb7\xbb\x09\x87\xcb\x94\x27\xe1\x02\x3a\x1c\x85\xc2\x72\xc1\x0b\xca\x78\x1f\x98\xc7\x6e\x10\x67\x39\x24\xe6\x58\xe7\x36\xcc\x54\x4a\xfc\x0c\xde\xcd\xe8\xe5\x8d\x14\xa1\x8e\x4b\x74\x21\x50\x75\x1a\x46\xa1\x4d\x90\xd7\x10\xa9\xea\x82\x26\x6e\x46\x65\x4b\xbc\x15\x36\x85\xc1\x95\x99\x8b\x09\x23\xcc\xe3\x13\x50\xb7\x9b\x20\x39\xf2\x38\x55\xdc\x3b\xa1\x14\x38\xb1\x5c\xc0\x3a\xaa\xd9\xd3\x1b\x58\x19\xc4\xb4\x12\x34\xe9\x3a\x30\x61\x55\x47\x9a\x6b\xd4\x5d\xf8\x4e\x1c\xf9\xe8\xd8\xea\x0e\x89\x6d\x92\x88\xd2\xe4\x8d\x87\x30\xd8\x6b\xf8\x99\x7c\x62\xa8\x37\x8a\xd9\x59\x25\x67\x2d\xef\xba\xa1\xc9\xcb\xa3\x15\xce\x1e\x64\xf8\x61\x6b\x17\x4b\x88\xc5\x7a\xb7\x80\x74\x8a\xe9\x6c\xdb\xe3\x6d\xc4\xd7\x90\x54\xfd\xd7\xbe\xc3\xb4\x0b\x1f\xc7\xb1\x26\x6e\x19\x7c\xa7\xfe\x41\xd0\x74\x3a\xd9\xa8\xa1\x04\x30\xa4\xe1\xcc\xed\xf8\xaa\x48\x62\x3f\xff\xa2\xbf\xd3\x30\x36\x4b\x0e\x3a\xa1\xdb\x7d\x9b\x9a\xa4\xca\x8e\x17\xd9\x3c\x91\x6d\x6a\xfe\x57\xd3\x3f\x7b\x05\x9b\x67\x0b\xba\x34\xbc\xee\xd5\x11\x65\xff\xc0\xdc\xa6\xaf\x53\x2e\xb3\xef\x97\x6b\x29\x6e\x97\x5c\xe2\x5b\x40\xec\x63\x9c\xa4\x35\x93\xb2\x59\x46\xba\x82\xa8\x19\xe8\xf1\xaf\xa7\xdf\xa3\x45\xf3\x5c\xc0\x8b\xf3\xe7\x73\x02\x88\x6c\xaf\x08\xe1\x43\x24\x45\xf6\x7d\xc5\x9c\x69\x85\xe7\xf8\xc9\xbb\xc8\xa6\x8a\x39\x25\xe2\x0c\x14\xbd\xd2\xb6\x92\x2b\xc9\x24\x32\x1f\x58\x23\xdf\x51\x18\x34\xf2\xa2\x9e\x4d\x7e\x32\x0f\x96\x3c\x7a\xd3\xa1\x52\x22\xaf\xa2\x2a\x98\x37\x51\x47\xfb\x3f\x43\x33\xf5\xb8\xc1\x39\xa1\x04\x5d\x3c\xc6\xde\x57\xb2\x4a\x23\x41\xcc\x16\xb3\xdf\xe0\x69\xa3\x58\x65\xb8\x52\xc2\xf8\x4f\xd4\xec\x28\xec\x17\x8f\xd0\xb9\xff\x32\xe1\xe5\x29\xbf\x3d\xc9\x69\xae\x17\xdb\x13\x96\xc2\xcb\xa7\x4b\x6a\xd4\xb8\x32\x07\xea\xb4\xb1\x2c\x93\x60\x4d\xa7\xeb\xbd\x03\x9b\xae\x1e\xa1\xcb\xf5\xc9\x79\x87\x0e\x8e\x87\xae\xc0\xc8\x83\xe8\xb9\x52\xbe\xc1\x98\x67\x60\x40\x3b\x19\x3e\x16\x5f\xff\x20\xff\x51\x60\xa4\x34\xbd\x25\xa7\xcb\xec\xc4\xf8\xb9\xb7\xa5\x5b\x41\x29\x6f\x96\x09\x34\x2b\x8a\x76\xaf\xb6\xab\x98\x91\xbd\x17\x42\x70\x8a\x99\xf3\x4a\x56\xef\xc1\x39\x20\x0f\x1b\x5f\xe1\x57\xbb\x27\x62\x40\xe7\xe2\xa0\xa0\xf4\xea\x59\x1a\xc0\xb2\x4a\x21\xcc\xd1\xcc\x4e\xf6\xc8\xba\xa0\x82\xde\xa2\x3f\xe5\x49\x90\x1e\xcb\xe7\x8c\x47\x4b\x27\x54\x33\x49\x05\x9f\x91\x15\xa5\x91\x39\xe4\x5e\xe6\xf9\xff\x40\x52\x38\x54\x22\xc9\x38\x61\x59\x4f\xe9\x89\xfa\x84\xd2\x82\x1d\x63\xea\x55\xd9\x32\x7d\x70\x19\xe9\x12\xf7\xeb\xae\xbf\x24\xbf\x21\x16\xcc\xc1\xa6\xa2\x83\xc3\x97\xba\x3c\xaa\x5e\xa8\xd4\x4a\xc7\x36\x78\x3f\xb4\xef\x27\x15\x95\x70\xae\xf5\x11\x56\xe9\x0e\x69\x4f\xaa\x6d\x1a\x9e\x19\x21\xd8\xd1\xb1\x87\xc3\xea\x36\x7f\x33\x08\xcf\xe1\xb7\x41\x2a\x55\x8b\xf3\xce\x7f\xfe\xf3\x0f\x89\x27\xe4\x96\x12\x6e\x3e\xfe\x17\x1f\x4b\xee\xf7\x1b\xae\x80\xd3\x63\xf5\xb7\x3a\xa8\xf7\xa9\x12\x82\x42\x6c\xa3\xc7\xf0\x88\xe4\x25\x56\xc5\x65\x45\xbd\x0d\xe1\x96\x96\xd7\xb6\x07\x37\x65\x80\x08\xfd\x63\xc2\x3f\xef\xdc\xf5\x5a\x33\x58\x46\xb1\xa1\xda\xba\x80\x40\x4b\x4f\xc4\x87\xd1\x9f\x32\xe3\xad\x86\x81\x39\x0f\x2c\x57\xa2\x09\x74\x24\x4f\xd1\x12\xdd\x0c\x88\x30\xe4\x11\x60\xd5\xd7\x40\x59\x95\x13\xae\x0c\x03\xa9\x08\xa0\x08\xeb\x41\x19\x68\xd5\x3f\x5b\x9c\x1d\x8d\xd4\xf3\xf0\x36\x55\x92\xe6\x26\xf4\xf2\x01\x68\x52\x1a\x58\x73\x97\x67\xb1\x8c\xf2\x40\x0c\xa6\xf6\x97\xcc\xea\x44\x63\xaa\x90\x38\x90\x92\xf3\x5e\xca\x8a\x4b\x1b\x7c\x5d\xa0\x42\x83\xa6\x7b\x0f\xb1\x3f\x36\x04\x73\x76\xbf\x35\x91\xae\xbd\x37\xab\xf5\x08\xb3\x66\xf5\xb6\xf5\x44\x2f\x41\xc0\x57\x2f\xc8\xea\x15\xb5\xd9\x2c\xc3\x47\x9d\x01\x8e\x57\xd7\x2d\xbc\x1b\x03\x71\x0d\xae\x0a\x3e\x27\xf9\x2a\x6d\x96\xf0\x19\x2b\x7d\x63\xaf\x28\x27\xe6\x93\x92\x6c\x08\xf1\x30\x39\xe8\xf8\xc9\xec\x97\xd5\xff\xb3\x4e\x5e\xc2\x5f\x17\x55\x96\x4d\xf0\x48\xd2\x2f\x48\xee\xd1\x75\x6b\xf1\x66\x0c\x61\x9f\xb1\xa0\x36\x90\x1f\xd9\xad\x59\x04\xee\x35\x4e\x90\x17\x4b\x12\xee\x8d\x44\x99\xe1\x8f\x69\x9f\x6f\x8b\xdc\xfa\x19\x59\xb5\xad\xdb\xa3\xf4\x0e\xeb\xc7\x27\x59\x4c\x7d\x26\x7f\x5f\x12\x3e\xd2\x5d\xb5\x0e\xb9\x82\x88\xc2\xd5\x14\x16\xa1\x20\x59\x7f\x4e\xc0\xeb\xaa\x08\xa9\xf1\xaf\xa7\xa9\x2d\x63\xde\x95\x41\xd1\xd1\x13\xc8\xd6\x45\xbf\x02\x79\xdb\x6e\x7e\x1d\x0a\xe7\x1b\x78\x5e\x47\xe1\x40\x63\xec\xfb\x14\x86\x04\xd4\xb9\xe2\xba\x9a\xc9\x07\x44\xb6\xbf\xaa\xb6\x37\xe3\xe1\x5d\x4e\xea\x24\xcb\x4e\x9c\x76\xd8\xef\xa7\x50\xa7\xbe\x5c\x52\x41\xa4\x6c\x59\x6f\xd3\x96\x88\xb0\xdd\x52\xe5\x40\x64\x1c\x3f\x98\xd7\x09\x5c\x63\x47\xdd\xeb\xd3\x1c\xce\x61\x93\x80\x46\x07\xd3\x4f\xf8\x2f\x3e\x0d\xcc\xc9\x81\xa6\x8e\x0d\x69\x0a\x8b\x80\x6f\xf7\x57\xbb\x11", 4096); syscall(SYS_ioctl, (intptr_t)r[2], 0xc0f24413, 0x100005c0); break; case 10: *(uint8_t*)0x10000000 = 0; *(uint8_t*)0x10000001 = 0; *(uint8_t*)0x10000002 = 0; *(uint8_t*)0x10000003 = 0; *(uint8_t*)0x10000004 = 0; *(uint8_t*)0x10000005 = 0; *(uint8_t*)0x10000006 = -1; *(uint8_t*)0x10000007 = -1; *(uint8_t*)0x10000008 = -1; *(uint8_t*)0x10000009 = -1; *(uint8_t*)0x1000000a = -1; *(uint8_t*)0x1000000b = -1; *(uint16_t*)0x1000000c = htobe16(0x8100); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 1, 0, 3); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 1, 3, 1); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 4, 4, 12); *(uint16_t*)0x10000010 = htobe16(0x806); *(uint16_t*)0x10000012 = htobe16(1); *(uint16_t*)0x10000014 = htobe16(0x800); *(uint8_t*)0x10000016 = 6; *(uint8_t*)0x10000017 = 4; *(uint16_t*)0x10000018 = htobe16(9); *(uint8_t*)0x1000001a = 0xaa; *(uint8_t*)0x1000001b = 0xaa; *(uint8_t*)0x1000001c = 0xaa; *(uint8_t*)0x1000001d = 0xaa; *(uint8_t*)0x1000001e = 0xaa; *(uint8_t*)0x1000001f = 0xbb; *(uint32_t*)0x10000020 = htobe32(0xe0000001); *(uint8_t*)0x10000024 = 0xaa; *(uint8_t*)0x10000025 = 0xaa; *(uint8_t*)0x10000026 = 0xaa; *(uint8_t*)0x10000027 = 0xaa; *(uint8_t*)0x10000028 = 0xaa; *(uint8_t*)0x10000029 = 0xbb; *(uint32_t*)0x1000002a = htobe32(-1); break; case 11: memcpy((void*)0x10000040, "\x0f\x5a\x60\xb0\x06\xc4\xe1\x01\x6b\xd7\x65\x2f\xc4\xe1\xf8\x11\x81\x00\x00\x00\x80\xc4\xc1\x19\x60\x18\x3e\x67\x3e\x0f\x01\xd9\xf2\xe1\xab\xf3\xee\x66\x0f\x14\x8b\xf1\xff\xff\xff", 45); syz_execute_func(0x10000040); break; case 12: break; } } int main(void) { syscall(SYS_mmap, 0x10000000, 0x1000000, 7, 0x1012, -1, 0); use_temporary_dir(); loop(); return 0; } :323:11: error: use of undeclared identifier 'SYS_freebsd12_closefrom' syscall(SYS_freebsd12_closefrom, (intptr_t)r[1]); ^ 1 error generated. compiler invocation: clang [-o /tmp/syz-executor532906827 -DGOOS_freebsd=1 -DGOARCH_386=1 -DHOSTGOOS_freebsd=1 -x c - -m32 -O2 -pthread -Wall -Werror -Wparentheses -Wunused-const-variable -Wframe-larger-than=16384 -static -lc++ -Wno-overflow] --- FAIL: TestGenerate/freebsd/386/4 (0.47s) csource_test.go:108: opts: {Threaded:true Collide:false Repeat:true RepeatTimes:10 Procs:0 Slowdown:1 Sandbox:none Fault:false FaultCall:0 FaultNth:0 Leak:false NetInjection:false NetDevices:false NetReset:false Cgroups:false BinfmtMisc:false CloseFDs:false KCSAN:false DevlinkPCI:false USB:false VhciInjection:false Wifi:false IEEE802154:false Sysctl:false UseTmpDir:true HandleSegv:false Repro:false Trace:false} program: getsockopt$inet6_sctp_SCTP_EVENT(0xffffffffffffff9c, 0x84, 0x1e, &(0x7f0000000000)={0x0, 0x4, 0x1}, &(0x7f0000000040)=0x8) getsockopt$inet6_sctp_SCTP_MAX_BURST(0xffffffffffffffff, 0x84, 0x19, &(0x7f0000000080)={0x0, 0x7fff}, &(0x7f00000000c0)=0x8) r0 = dup(0xffffffffffffffff) setsockopt$inet6_sctp_SCTP_ADAPTATION_LAYER(r0, 0x84, 0x8, &(0x7f0000000100)={0x7}, 0x4) readv(r0, &(0x7f0000000540)=[{&(0x7f0000000140)=""/149, 0x95}, {&(0x7f0000000200)=""/179, 0xb3}, {&(0x7f00000002c0)=""/172, 0xac}, {&(0x7f0000000380)=""/182, 0xb6}, {&(0x7f0000000440)=""/206, 0xce}], 0x5) thr_wake(0xffffffffffffffff) r1 = socket$inet_udplite(0x2, 0x2, 0x88) freebsd12_closefrom(r1) r2 = open(&(0x7f0000000580)='./file0\x00', 0x4, 0x40) ioctl$DIOCGETSTATE(r2, 0xc0f24413, &(0x7f00000005c0)="2a368a90b488d04ee1eccd139778043b00a6f81a3627b593b0dfce33265cda8fba8b0fa538b3e364ad1d1f7de1011c63f592a64dd0ec953f9c050f991f42d24d7bc47c4d5bf323e393605e59a1eb5bc4e948f83890911ed35b53a2b0d63db79dc21d6190f8b434d6ff85e54fb9a28a7566d1a24337e72e82acc9e518339acac7dd8960a1c9c5cb3da9e6bc0b697e9dbbc60fa8b72c3719286bf44c2e8fc8356e9125eae9bed216f349c292c989d7dcd252dfb79c4fdbdc865109f1e3cf9cd67cfa8babb7d3627ce0080910c5755c92cbb2c159172a65ea8a2085f4ce10e1436ef2f7d6f1db702a387cd35681293331bd1bdbd690274a7c372f84e4d5748791d707ee5c127eda8b84596b0c10890c881006beb38ad56d139d8c74f14f3598de551ee3a13466e67cb3d2c5fd909061522058ffbe9ae431325544c894b9841a4c253632a332c6e0d881645f90b6337db99b7fad1bd162f73d11ce5e57d5f321fb68a795c990662a35706af845b5383fe50ba8637613dd43aa7cf20020355218e060af2658866349197f30c835351bd69683baaab8be6b4da04fb35a423314fab610b8d1cf0440fedb28a5e19584ef7867bd962ba4ede513af03dda669f76c67d28fb507d5762c61d528f1cf3a7c563eee1c04106254ce3fd821c17a0defc37d79a5de7ef9352c7b411c953958d254d0d3e5ae618a68a53e45809d493c474a208ccc0f170df4836d0593b7b7ce874fa01fe0415a594f941c31f0784aad394f06b8537029555ccc73eaab0b36846fe5cc6e92db0c90a62d1d36c382c351921789dfbe0f60b13db0814aaf4fa6f813a7cf2ad12ebe1050eef92768c313718d8db202e3d1093dcf5933451efd9b72ee4ef75dfc0ea0afffb81bbee550382b6b1212cea097b709aec7c0a85799127d01376f7bd6f255732972f889b6843f615478ee23124737f813b18f3133af12b4e41e70bea058b00a5f965ed2377b48916bc2a7162adbf7bc9ca11aeaaf88c2f5229af6dd3861574a0d5d5ae482f2d7e86d172005cca565b12b199a7d81087d85776d613940b48735266d45a4ad11e168e89b893e650b984b483abb318f432f13c61f26f3deabc6b45dcf5ff4579da89a9d23251d1a6bec122cb210fc3afa89102395e1d26b14ca4180c1b6fe0b3000049550283b618ab1fd6b165855b297d9457ac54946fb99e6f0d8872db87934347b6d9a38a731bf8bd08f2a7a7d80d4cf24fa9a16c209a18494133d6dd0d292efeba7872c4d7bdfafd416e634cf90ab4dc9bccc643227a05552eee0f916ec202dcb011c8394b10996873a0a4b7aee1514f595d23289a3bf62085b0aeea0009206e7a7061ad866352241708acbcf3c2fc0fdcaaaa8b3be8e510b99e04b96ddafa9f8483b7a568c5ebaddad5677d9144a270d0444aea3c0775d241d79baea30dc4bb19a712471f112838c7525496d4a8fa66658610347d490af85305ceabf0f35ac277f2ef1b6a8e5813ce0bea587e627d725f1db1241222acd41e16c8a32bdb40778d4a10f87b1e90e006dfc03d2934589d25965240ee9c21419a2aa5bd8f3fcd3208f9b52155513a6da73468dc0703102bcca0eba18e88c19da64ab5c6bf6cb8109730153693332f7e160862719dc08175ed074f5bf2887705501331cf75254fce0e145ac2241875293036f2aa96592194073d04754c26f19e7763332b43d0287a28347d5155bacfd32628f500d9e9c04f5369f6317e606e422f98c48b11f755b2b0fdc79494a769700d35a88a330f02cab2fb7b65049e2d1e350a6e02d5d54ac7c85f268c0eaf77071d5acabed99429030d00b30c4caa21ce322d4f780e892201129ff772d22cc4d4c274b479948d22acfc1760b2917ff308e9a3aa22779bd0f453d11e0dee788dcf95b7be90c3b3b3a7fe535da503c381e346eb2a0b0e375ad726ee2a38919810d5c545edcea1b23109a3fb68e30c01cc704a9d23ae55d18cc9fdff02bd484d59f468d75a796657fdca59f55d4be7efd7378a31685334adc0cacaef9af5649da85dc6c5989cf8e2b9977a62a8ca8bc27782b1b3028a4de9a0e87dbab7879144e40a811f0b1b2880d26823c990adeb7df41116fcf6022a08d87ac7c63ecdff796dafa082e5cd85d6c3f17f8740ea1e9a0c886e0cd7074c45dbc2dc7b34c6859e06a0cee9b20ce43724a414eb77b0b804dffcc7bc44dab7fa02a3836eae396f9ede48d6deea333b0a990ebbcd1b336bb73d8e72c72e12449f1ca720a3bcd9788d1dcdde51214b771a1ca1389ebb5a05645acf97315651ae886ecd5f009a7cc62bfc49459b71fea3f8adc05d37129781ac9073eb83f1eeb1fc84a90c8316c36164259a7c24e5a200c353ebd7bf2324eff521680b218a8654b6df7b046afdc85a78cfee174a6e91978d4af6511d30799195df42886c8327dcc624c2912f83fe1bb6302ec71a8f098d5e056d89595c460062d29a5546e5ba77e0a179a848f033e11afc1a19897e83c2ab7eb58207222156767ebdb2e2426ae2c594c205da59650283b33cbf50a77d607de9e2ffe0f080fd773c7e03f20505dd0cb15cd8924cdd6b87d7f615bccd2eb47839561d79a02ca9cde0fde19b5a0c2a90bd4a0c7361bfdad5374ac42b5161115759cfa2ac08c16795ab52c84c540710b1d1d5006f2aba098c6b682a51f03ff5d79b6bce020ce726f7fa2e7685138087d609c05054a9f4c4568152e8900d866bd4a980b07d35b833647d1f4e26575d4de1c7a7ccf5cd119d6db4c72fb9c24e3a085ecdde521ff18bec6c16c931457cd8e26461d48b55c211a27ba498663b34ea0dcfd8cdfa12900fe8367abbeac8e4eb1a18036c9c1694935a573b61afc05c1265aafb6ef584e823b842764b71dca331837649a51d0c96cefec435835b8f4b5dac5d1f24be94d5378a1664efc1daf557015657adb77881c5d181cd9d1f1d3d96bf74d5167930285b6f98fef31bbef7378cf2f12c4c479f96076d8170d768dfd2fe823cd14d6d7059d75d9547ab22ada6fd1a364ae7629e6f7e466a4c8a49483e4555f6c0881fd2cee97923247f2ca839f88b1eda7c3b7c75f530c0fd60b85e8b10d4b58d7b8815bbf1e4f42a16b25225888bda247d46be3551325b606f61ce776a92f046884fd275e82d4c08761b60d698c5adde78ded62d8835a1b23b3ff96576b2c198f722e76ea22667388a44ed316ea6dc5be4bd84043572a2afa19cd9a84ef5ffc28fb0f689c4c2526cec261502f1e0af665cbdef50e3a669c0aa1364307c89d766d5869e2c9e414ca216735c01826eee4ea8bcb09b67a8dd8f7edb68536c6eefa0fa0d78f4a86bd70482d9852e48291d1e16ad11434779a27861af8192a64275084e7d9e0604c52073c3324b9577b088073ab270041d041cf5ff18831b80e00a273b6860059bec4a6c41902644ef923e890d558b5a96ef9eefe19de120735e98987a98d53a56e3226c576cd2ef486ae138ff3b62eae33ca91f8b77d3a98f583e863d4ebe53d0b3fa97c4768280593f935f6142595ed15057adf8b60148620493afeb5ff5de17b6ac26d5bbb7cf7f47132642ebe73de0051f073610b0c1eaef6749919cf0e87144c0d8f70eeabb7fe6c2e58f914e544e8be21c2f3a602d61cfcf01765e49cbcd0a6f9b1616ec56a4de6e52bc979840a842d9b2dd4b5d59d15b3ce85138bc98c1e254c84853b6726b6fdb7bc79e90d34be3dd86c4defbfac943880292fec0d995cdb5244514d11518efe79204d53c9cda4a487bf30e9ff7f286e536ac1fe9fa1a71f3eed0e47f8471e88db19fcd3e3197698969798f26d5c9c4b8a7b935a0faf395d2ba9ee8c57e13747ad4d01a2eeca7e853f9c5273fc161854c2e966f853a4888844442291ed0b3c59315f8cbae2c9a4af084d10cb4c7e640001b7f340132d80474c6daa0e009c380df0feb57d5eb1ed8b40cdf2446c8a424d48ebe5897d922e42f25b98836395db513e4904fc2521acca5303ac576454e602d4b35520736818a8468379000f8f30f9e37d05c7bc1f16ecc9acb0f8c630966775575a4064a770f7b53f7ca7ccc00bdb71195d53cf21b74820665220c05785b225b2cbe2855a5ae40b9bce9e1eddb78a9e4c0825fb47fff9e6f37a9554d9ee046cd18a301daee26ec5eef4f101256e0c59df35cbb5192f80162ba3937dbf3619987bf18b1d69d6e6e0c42fead7f0ed6d2cf54da78f874960e445a108b7bb0987cb9427e1023a1c85c272c10bca781f98c76e10673924e658e736cc544afc0cdecde8e58d14a18e4b742150751a46a14d90d710a9ea82266e46654bbc153685c195998b0923cce31350b79b2039f23855dc3ba11438b15cc03aaad9d31b5819c4b41234e93a306155479a6bd45df84e1cf9e8d8ea0e896d9288d2e48d8730d86bf8997c62a8378ad95925672defbaa1c9cba315ce1e64f8616b174b88c57ab780748ae96cdbe36dc4d79054fdd7bec3b40b1fc7b1266e197ca7fe41d0743ad9a8a10430a4e1ccedf8aa48623fffa2bfd330364b0e3aa1db7d9b9aa4ca8e17d93c916d6afe57d33f7b059b670bba34bceed51165ffc0dca6af532eb3ef976b296e975ce25b40ec639ca43593b25946ba82a819e8f1afa7dfa345f35cc08bf3e77302886caf08e1432445f67dc59c6985e7f8c9bbc8a68a3925e20c14bdd2b6922bc924321f5823df511834f2a29e4d7e320f963c7ad3a15222afa22a98375147fb3f4333f5b8c139a1045d3cc6de57b24a2341cc16b3dfe069a35865b852c2f84fd4ec28ec178fd0b9ff32e1e529bf3dc969ae17db1396c2cba74b6ad4b83207eab4b12c93604da7ebbd039bae1ea1cbf5c979870e8e87aec0c883e8b952bec1986760403b193e165fff20ff5160a434bd25a7cbecc4f8b9b7a55b41296f9609342b8a76afb6ab9891bd1742708a99f34a56efc139200f1b5fe157bb276240e7e2a0a0f4ea591ac0b24a21ccd1cc4ef6c8baa082dea23fe549901ecbe78c474b27543349059f9115a59139e45ee6f9ff4052385422c93861594fe989fa84d2821d63ea55d9327d7019e912f7ebaebf24bf2116ccc1a6a283c397ba3caa5ea8d44ac736783fb4ef27159570aef51156e90e694faa6d1a9e1921d8d1b187c3ea367f3308cfe1b7412a558bf3ce7ffef30f8927e496126e3efe171f4beef71bae80d363f5b73aa8f7a91282426ca3c7f088e42556c56545bd0de19696d7b60737658008fd63c23fefdcf55a335846b1a1daba80404b4fc487d19f32e3ad8681390f2c57a20974244fd112dd0c8830e41160d5d740599513ae0c03a908a008eb411968d53f5b9c1d8dd4f3f0365592e626f4f20168521a58739767b18cf2400ca6f697ccea4463aa90389092f35eca8a4b1b7c5da04283a67b0fb13f36047376bf3591aebd37abf508b366f5b6f5442f41c0572fc8ea15b5d92cc3479d018e57d72dbc1b03710dae0a3e27f92a6d96f0192b7d63af2827e693926c08f13039e8f8c9ec97d5ffb34e5ec25f1755964df048d22f48eed1756bf1660c619fb1a036901fd9ad5904ee354e90174b12ee8d4499e18f699f6f8bdcfa1959b5addba3f40eebc727594c7d267f5f123ed25db50eb98288c2d51416a120597f4ec0ebaa08a9f1afa7a92d63de9541d1d113c8d645bf0279db6e7e1d0ae71b785e47e14063ecfb148604d4b9e2ba9ac90744b6bfaab637e3e15d4eea24cb4e9c76d8efa750a7be5c5241a46c596fd39688b0dd52e540641c3f98d7095c6347ddebd31cce6193804607d34ff82f3e0dccc981a68e0d690a8b806ff757bb11") syz_emit_ethernet(0x2e, &(0x7f0000000000)={@empty, @broadcast, [{[], {0x8100, 0x1, 0x1, 0x4}}], {@arp={0x806, @ether_ipv4={0x1, 0x800, 0x6, 0x4, 0x9, @remote, @multicast1, @remote, @broadcast}}}}) syz_execute_func(&(0x7f0000000040)="0f5a60b006c4e1016bd7652fc4e1f8118100000080c4c11960183e673e0f01d9f2e1abf3ee660f148bf1ffffff") syz_extract_tcp_res(&(0x7f0000000080), 0x7fffffff, 0x7) csource_test.go:109: failed to build program: // autogenerated by syzkaller (https://github.com/google/syzkaller) #define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include static void kill_and_wait(int pid, int* status) { kill(pid, SIGKILL); while (waitpid(-1, status, 0) != pid) { } } static void sleep_ms(uint64_t ms) { usleep(ms * 1000); } static uint64_t current_time_ms(void) { struct timespec ts; if (clock_gettime(CLOCK_MONOTONIC, &ts)) exit(1); return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000; } static void use_temporary_dir(void) { char tmpdir_template[] = "./syzkaller.XXXXXX"; char* tmpdir = mkdtemp(tmpdir_template); if (!tmpdir) exit(1); if (chmod(tmpdir, 0777)) exit(1); if (chdir(tmpdir)) exit(1); } static void __attribute__((noinline)) remove_dir(const char* dir) { DIR* dp = opendir(dir); if (dp == NULL) { if (errno == EACCES) { if (rmdir(dir)) exit(1); return; } exit(1); } struct dirent* ep = 0; while ((ep = readdir(dp))) { if (strcmp(ep->d_name, ".") == 0 || strcmp(ep->d_name, "..") == 0) continue; char filename[FILENAME_MAX]; snprintf(filename, sizeof(filename), "%s/%s", dir, ep->d_name); struct stat st; if (lstat(filename, &st)) exit(1); if (S_ISDIR(st.st_mode)) { remove_dir(filename); continue; } if (unlink(filename)) exit(1); } closedir(dp); if (rmdir(dir)) exit(1); } static void thread_start(void* (*fn)(void*), void* arg) { pthread_t th; pthread_attr_t attr; pthread_attr_init(&attr); pthread_attr_setstacksize(&attr, 128 << 10); int i = 0; for (; i < 100; i++) { if (pthread_create(&th, &attr, fn, arg) == 0) { pthread_attr_destroy(&attr); return; } if (errno == EAGAIN) { usleep(50); continue; } break; } exit(1); } typedef struct { pthread_mutex_t mu; pthread_cond_t cv; int state; } event_t; static void event_init(event_t* ev) { if (pthread_mutex_init(&ev->mu, 0)) exit(1); if (pthread_cond_init(&ev->cv, 0)) exit(1); ev->state = 0; } static void event_reset(event_t* ev) { ev->state = 0; } static void event_set(event_t* ev) { pthread_mutex_lock(&ev->mu); if (ev->state) exit(1); ev->state = 1; pthread_mutex_unlock(&ev->mu); pthread_cond_broadcast(&ev->cv); } static void event_wait(event_t* ev) { pthread_mutex_lock(&ev->mu); while (!ev->state) pthread_cond_wait(&ev->cv, &ev->mu); pthread_mutex_unlock(&ev->mu); } static int event_isset(event_t* ev) { pthread_mutex_lock(&ev->mu); int res = ev->state; pthread_mutex_unlock(&ev->mu); return res; } static int event_timedwait(event_t* ev, uint64_t timeout) { uint64_t start = current_time_ms(); uint64_t now = start; pthread_mutex_lock(&ev->mu); for (;;) { if (ev->state) break; uint64_t remain = timeout - (now - start); struct timespec ts; ts.tv_sec = remain / 1000; ts.tv_nsec = (remain % 1000) * 1000 * 1000; pthread_cond_timedwait(&ev->cv, &ev->mu, &ts); now = current_time_ms(); if (now - start > timeout) break; } int res = ev->state; pthread_mutex_unlock(&ev->mu); return res; } #define BITMASK(bf_off,bf_len) (((1ull << (bf_len)) - 1) << (bf_off)) #define STORE_BY_BITMASK(type,htobe,addr,val,bf_off,bf_len) *(type*)(addr) = htobe((htobe(*(type*)(addr)) & ~BITMASK((bf_off), (bf_len))) | (((type)(val) << (bf_off)) & BITMASK((bf_off), (bf_len)))) static void sandbox_common() { struct rlimit rlim; rlim.rlim_cur = rlim.rlim_max = 128 << 20; setrlimit(RLIMIT_AS, &rlim); rlim.rlim_cur = rlim.rlim_max = 8 << 20; setrlimit(RLIMIT_MEMLOCK, &rlim); rlim.rlim_cur = rlim.rlim_max = 1 << 20; setrlimit(RLIMIT_FSIZE, &rlim); rlim.rlim_cur = rlim.rlim_max = 1 << 20; setrlimit(RLIMIT_STACK, &rlim); rlim.rlim_cur = rlim.rlim_max = 0; setrlimit(RLIMIT_CORE, &rlim); rlim.rlim_cur = rlim.rlim_max = 256; setrlimit(RLIMIT_NOFILE, &rlim); } static void loop(); static int do_sandbox_none(void) { sandbox_common(); loop(); return 0; } static long syz_execute_func(volatile long text) { ((void (*)(void))(text))(); return 0; } struct thread_t { int created, call; event_t ready, done; }; static struct thread_t threads[16]; static void execute_call(int call); static int running; static void* thr(void* arg) { struct thread_t* th = (struct thread_t*)arg; for (;;) { event_wait(&th->ready); event_reset(&th->ready); execute_call(th->call); __atomic_fetch_sub(&running, 1, __ATOMIC_RELAXED); event_set(&th->done); } return 0; } static void execute_one(void) { int i, call, thread; for (call = 0; call < 13; call++) { for (thread = 0; thread < (int)(sizeof(threads) / sizeof(threads[0])); thread++) { struct thread_t* th = &threads[thread]; if (!th->created) { th->created = 1; event_init(&th->ready); event_init(&th->done); event_set(&th->done); thread_start(thr, th); } if (!event_isset(&th->done)) continue; event_reset(&th->done); th->call = call; __atomic_fetch_add(&running, 1, __ATOMIC_RELAXED); event_set(&th->ready); event_timedwait(&th->done, 50); break; } } for (i = 0; i < 100 && __atomic_load_n(&running, __ATOMIC_RELAXED); i++) sleep_ms(1); } static void execute_one(void); #define WAIT_FLAGS 0 static void loop(void) { int iter = 0; for (; iter < 10; iter++) { char cwdbuf[32]; sprintf(cwdbuf, "./%d", iter); if (mkdir(cwdbuf, 0777)) exit(1); int pid = fork(); if (pid < 0) exit(1); if (pid == 0) { if (chdir(cwdbuf)) exit(1); execute_one(); exit(0); } int status = 0; uint64_t start = current_time_ms(); for (;;) { if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid) break; sleep_ms(1); if (current_time_ms() - start < 5000) { continue; } kill_and_wait(pid, &status); break; } remove_dir(cwdbuf); } } uint64_t r[3] = {0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff}; void execute_call(int call) { intptr_t res = 0; switch (call) { case 0: *(uint32_t*)0x10000000 = 0; *(uint16_t*)0x10000004 = 4; *(uint8_t*)0x10000006 = 1; *(uint32_t*)0x10000040 = 8; syscall(SYS_getsockopt, 0xffffff9c, 0x84, 0x1e, 0x10000000, 0x10000040); break; case 1: *(uint32_t*)0x10000080 = 0; *(uint32_t*)0x10000084 = 0x7fff; *(uint32_t*)0x100000c0 = 8; syscall(SYS_getsockopt, -1, 0x84, 0x19, 0x10000080, 0x100000c0); break; case 2: res = syscall(SYS_dup, -1); if (res != -1) r[0] = res; break; case 3: *(uint32_t*)0x10000100 = 7; syscall(SYS_setsockopt, (intptr_t)r[0], 0x84, 8, 0x10000100, 4); break; case 4: *(uint32_t*)0x10000540 = 0x10000140; *(uint32_t*)0x10000544 = 0x95; *(uint32_t*)0x10000548 = 0x10000200; *(uint32_t*)0x1000054c = 0xb3; *(uint32_t*)0x10000550 = 0x100002c0; *(uint32_t*)0x10000554 = 0xac; *(uint32_t*)0x10000558 = 0x10000380; *(uint32_t*)0x1000055c = 0xb6; *(uint32_t*)0x10000560 = 0x10000440; *(uint32_t*)0x10000564 = 0xce; syscall(SYS_readv, (intptr_t)r[0], 0x10000540, 5); break; case 5: syscall(SYS_thr_wake, -1); break; case 6: res = syscall(SYS_socket, 2, 2, 0x88); if (res != -1) r[1] = res; break; case 7: syscall(SYS_freebsd12_closefrom, (intptr_t)r[1]); break; case 8: memcpy((void*)0x10000580, "./file0\000", 8); res = syscall(SYS_open, 0x10000580, 4, 0x40); if (res != -1) r[2] = res; break; case 9: memcpy((void*)0x100005c0, "\x2a\x36\x8a\x90\xb4\x88\xd0\x4e\xe1\xec\xcd\x13\x97\x78\x04\x3b\x00\xa6\xf8\x1a\x36\x27\xb5\x93\xb0\xdf\xce\x33\x26\x5c\xda\x8f\xba\x8b\x0f\xa5\x38\xb3\xe3\x64\xad\x1d\x1f\x7d\xe1\x01\x1c\x63\xf5\x92\xa6\x4d\xd0\xec\x95\x3f\x9c\x05\x0f\x99\x1f\x42\xd2\x4d\x7b\xc4\x7c\x4d\x5b\xf3\x23\xe3\x93\x60\x5e\x59\xa1\xeb\x5b\xc4\xe9\x48\xf8\x38\x90\x91\x1e\xd3\x5b\x53\xa2\xb0\xd6\x3d\xb7\x9d\xc2\x1d\x61\x90\xf8\xb4\x34\xd6\xff\x85\xe5\x4f\xb9\xa2\x8a\x75\x66\xd1\xa2\x43\x37\xe7\x2e\x82\xac\xc9\xe5\x18\x33\x9a\xca\xc7\xdd\x89\x60\xa1\xc9\xc5\xcb\x3d\xa9\xe6\xbc\x0b\x69\x7e\x9d\xbb\xc6\x0f\xa8\xb7\x2c\x37\x19\x28\x6b\xf4\x4c\x2e\x8f\xc8\x35\x6e\x91\x25\xea\xe9\xbe\xd2\x16\xf3\x49\xc2\x92\xc9\x89\xd7\xdc\xd2\x52\xdf\xb7\x9c\x4f\xdb\xdc\x86\x51\x09\xf1\xe3\xcf\x9c\xd6\x7c\xfa\x8b\xab\xb7\xd3\x62\x7c\xe0\x08\x09\x10\xc5\x75\x5c\x92\xcb\xb2\xc1\x59\x17\x2a\x65\xea\x8a\x20\x85\xf4\xce\x10\xe1\x43\x6e\xf2\xf7\xd6\xf1\xdb\x70\x2a\x38\x7c\xd3\x56\x81\x29\x33\x31\xbd\x1b\xdb\xd6\x90\x27\x4a\x7c\x37\x2f\x84\xe4\xd5\x74\x87\x91\xd7\x07\xee\x5c\x12\x7e\xda\x8b\x84\x59\x6b\x0c\x10\x89\x0c\x88\x10\x06\xbe\xb3\x8a\xd5\x6d\x13\x9d\x8c\x74\xf1\x4f\x35\x98\xde\x55\x1e\xe3\xa1\x34\x66\xe6\x7c\xb3\xd2\xc5\xfd\x90\x90\x61\x52\x20\x58\xff\xbe\x9a\xe4\x31\x32\x55\x44\xc8\x94\xb9\x84\x1a\x4c\x25\x36\x32\xa3\x32\xc6\xe0\xd8\x81\x64\x5f\x90\xb6\x33\x7d\xb9\x9b\x7f\xad\x1b\xd1\x62\xf7\x3d\x11\xce\x5e\x57\xd5\xf3\x21\xfb\x68\xa7\x95\xc9\x90\x66\x2a\x35\x70\x6a\xf8\x45\xb5\x38\x3f\xe5\x0b\xa8\x63\x76\x13\xdd\x43\xaa\x7c\xf2\x00\x20\x35\x52\x18\xe0\x60\xaf\x26\x58\x86\x63\x49\x19\x7f\x30\xc8\x35\x35\x1b\xd6\x96\x83\xba\xaa\xb8\xbe\x6b\x4d\xa0\x4f\xb3\x5a\x42\x33\x14\xfa\xb6\x10\xb8\xd1\xcf\x04\x40\xfe\xdb\x28\xa5\xe1\x95\x84\xef\x78\x67\xbd\x96\x2b\xa4\xed\xe5\x13\xaf\x03\xdd\xa6\x69\xf7\x6c\x67\xd2\x8f\xb5\x07\xd5\x76\x2c\x61\xd5\x28\xf1\xcf\x3a\x7c\x56\x3e\xee\x1c\x04\x10\x62\x54\xce\x3f\xd8\x21\xc1\x7a\x0d\xef\xc3\x7d\x79\xa5\xde\x7e\xf9\x35\x2c\x7b\x41\x1c\x95\x39\x58\xd2\x54\xd0\xd3\xe5\xae\x61\x8a\x68\xa5\x3e\x45\x80\x9d\x49\x3c\x47\x4a\x20\x8c\xcc\x0f\x17\x0d\xf4\x83\x6d\x05\x93\xb7\xb7\xce\x87\x4f\xa0\x1f\xe0\x41\x5a\x59\x4f\x94\x1c\x31\xf0\x78\x4a\xad\x39\x4f\x06\xb8\x53\x70\x29\x55\x5c\xcc\x73\xea\xab\x0b\x36\x84\x6f\xe5\xcc\x6e\x92\xdb\x0c\x90\xa6\x2d\x1d\x36\xc3\x82\xc3\x51\x92\x17\x89\xdf\xbe\x0f\x60\xb1\x3d\xb0\x81\x4a\xaf\x4f\xa6\xf8\x13\xa7\xcf\x2a\xd1\x2e\xbe\x10\x50\xee\xf9\x27\x68\xc3\x13\x71\x8d\x8d\xb2\x02\xe3\xd1\x09\x3d\xcf\x59\x33\x45\x1e\xfd\x9b\x72\xee\x4e\xf7\x5d\xfc\x0e\xa0\xaf\xff\xb8\x1b\xbe\xe5\x50\x38\x2b\x6b\x12\x12\xce\xa0\x97\xb7\x09\xae\xc7\xc0\xa8\x57\x99\x12\x7d\x01\x37\x6f\x7b\xd6\xf2\x55\x73\x29\x72\xf8\x89\xb6\x84\x3f\x61\x54\x78\xee\x23\x12\x47\x37\xf8\x13\xb1\x8f\x31\x33\xaf\x12\xb4\xe4\x1e\x70\xbe\xa0\x58\xb0\x0a\x5f\x96\x5e\xd2\x37\x7b\x48\x91\x6b\xc2\xa7\x16\x2a\xdb\xf7\xbc\x9c\xa1\x1a\xea\xaf\x88\xc2\xf5\x22\x9a\xf6\xdd\x38\x61\x57\x4a\x0d\x5d\x5a\xe4\x82\xf2\xd7\xe8\x6d\x17\x20\x05\xcc\xa5\x65\xb1\x2b\x19\x9a\x7d\x81\x08\x7d\x85\x77\x6d\x61\x39\x40\xb4\x87\x35\x26\x6d\x45\xa4\xad\x11\xe1\x68\xe8\x9b\x89\x3e\x65\x0b\x98\x4b\x48\x3a\xbb\x31\x8f\x43\x2f\x13\xc6\x1f\x26\xf3\xde\xab\xc6\xb4\x5d\xcf\x5f\xf4\x57\x9d\xa8\x9a\x9d\x23\x25\x1d\x1a\x6b\xec\x12\x2c\xb2\x10\xfc\x3a\xfa\x89\x10\x23\x95\xe1\xd2\x6b\x14\xca\x41\x80\xc1\xb6\xfe\x0b\x30\x00\x04\x95\x50\x28\x3b\x61\x8a\xb1\xfd\x6b\x16\x58\x55\xb2\x97\xd9\x45\x7a\xc5\x49\x46\xfb\x99\xe6\xf0\xd8\x87\x2d\xb8\x79\x34\x34\x7b\x6d\x9a\x38\xa7\x31\xbf\x8b\xd0\x8f\x2a\x7a\x7d\x80\xd4\xcf\x24\xfa\x9a\x16\xc2\x09\xa1\x84\x94\x13\x3d\x6d\xd0\xd2\x92\xef\xeb\xa7\x87\x2c\x4d\x7b\xdf\xaf\xd4\x16\xe6\x34\xcf\x90\xab\x4d\xc9\xbc\xcc\x64\x32\x27\xa0\x55\x52\xee\xe0\xf9\x16\xec\x20\x2d\xcb\x01\x1c\x83\x94\xb1\x09\x96\x87\x3a\x0a\x4b\x7a\xee\x15\x14\xf5\x95\xd2\x32\x89\xa3\xbf\x62\x08\x5b\x0a\xee\xa0\x00\x92\x06\xe7\xa7\x06\x1a\xd8\x66\x35\x22\x41\x70\x8a\xcb\xcf\x3c\x2f\xc0\xfd\xca\xaa\xa8\xb3\xbe\x8e\x51\x0b\x99\xe0\x4b\x96\xdd\xaf\xa9\xf8\x48\x3b\x7a\x56\x8c\x5e\xba\xdd\xad\x56\x77\xd9\x14\x4a\x27\x0d\x04\x44\xae\xa3\xc0\x77\x5d\x24\x1d\x79\xba\xea\x30\xdc\x4b\xb1\x9a\x71\x24\x71\xf1\x12\x83\x8c\x75\x25\x49\x6d\x4a\x8f\xa6\x66\x58\x61\x03\x47\xd4\x90\xaf\x85\x30\x5c\xea\xbf\x0f\x35\xac\x27\x7f\x2e\xf1\xb6\xa8\xe5\x81\x3c\xe0\xbe\xa5\x87\xe6\x27\xd7\x25\xf1\xdb\x12\x41\x22\x2a\xcd\x41\xe1\x6c\x8a\x32\xbd\xb4\x07\x78\xd4\xa1\x0f\x87\xb1\xe9\x0e\x00\x6d\xfc\x03\xd2\x93\x45\x89\xd2\x59\x65\x24\x0e\xe9\xc2\x14\x19\xa2\xaa\x5b\xd8\xf3\xfc\xd3\x20\x8f\x9b\x52\x15\x55\x13\xa6\xda\x73\x46\x8d\xc0\x70\x31\x02\xbc\xca\x0e\xba\x18\xe8\x8c\x19\xda\x64\xab\x5c\x6b\xf6\xcb\x81\x09\x73\x01\x53\x69\x33\x32\xf7\xe1\x60\x86\x27\x19\xdc\x08\x17\x5e\xd0\x74\xf5\xbf\x28\x87\x70\x55\x01\x33\x1c\xf7\x52\x54\xfc\xe0\xe1\x45\xac\x22\x41\x87\x52\x93\x03\x6f\x2a\xa9\x65\x92\x19\x40\x73\xd0\x47\x54\xc2\x6f\x19\xe7\x76\x33\x32\xb4\x3d\x02\x87\xa2\x83\x47\xd5\x15\x5b\xac\xfd\x32\x62\x8f\x50\x0d\x9e\x9c\x04\xf5\x36\x9f\x63\x17\xe6\x06\xe4\x22\xf9\x8c\x48\xb1\x1f\x75\x5b\x2b\x0f\xdc\x79\x49\x4a\x76\x97\x00\xd3\x5a\x88\xa3\x30\xf0\x2c\xab\x2f\xb7\xb6\x50\x49\xe2\xd1\xe3\x50\xa6\xe0\x2d\x5d\x54\xac\x7c\x85\xf2\x68\xc0\xea\xf7\x70\x71\xd5\xac\xab\xed\x99\x42\x90\x30\xd0\x0b\x30\xc4\xca\xa2\x1c\xe3\x22\xd4\xf7\x80\xe8\x92\x20\x11\x29\xff\x77\x2d\x22\xcc\x4d\x4c\x27\x4b\x47\x99\x48\xd2\x2a\xcf\xc1\x76\x0b\x29\x17\xff\x30\x8e\x9a\x3a\xa2\x27\x79\xbd\x0f\x45\x3d\x11\xe0\xde\xe7\x88\xdc\xf9\x5b\x7b\xe9\x0c\x3b\x3b\x3a\x7f\xe5\x35\xda\x50\x3c\x38\x1e\x34\x6e\xb2\xa0\xb0\xe3\x75\xad\x72\x6e\xe2\xa3\x89\x19\x81\x0d\x5c\x54\x5e\xdc\xea\x1b\x23\x10\x9a\x3f\xb6\x8e\x30\xc0\x1c\xc7\x04\xa9\xd2\x3a\xe5\x5d\x18\xcc\x9f\xdf\xf0\x2b\xd4\x84\xd5\x9f\x46\x8d\x75\xa7\x96\x65\x7f\xdc\xa5\x9f\x55\xd4\xbe\x7e\xfd\x73\x78\xa3\x16\x85\x33\x4a\xdc\x0c\xac\xae\xf9\xaf\x56\x49\xda\x85\xdc\x6c\x59\x89\xcf\x8e\x2b\x99\x77\xa6\x2a\x8c\xa8\xbc\x27\x78\x2b\x1b\x30\x28\xa4\xde\x9a\x0e\x87\xdb\xab\x78\x79\x14\x4e\x40\xa8\x11\xf0\xb1\xb2\x88\x0d\x26\x82\x3c\x99\x0a\xde\xb7\xdf\x41\x11\x6f\xcf\x60\x22\xa0\x8d\x87\xac\x7c\x63\xec\xdf\xf7\x96\xda\xfa\x08\x2e\x5c\xd8\x5d\x6c\x3f\x17\xf8\x74\x0e\xa1\xe9\xa0\xc8\x86\xe0\xcd\x70\x74\xc4\x5d\xbc\x2d\xc7\xb3\x4c\x68\x59\xe0\x6a\x0c\xee\x9b\x20\xce\x43\x72\x4a\x41\x4e\xb7\x7b\x0b\x80\x4d\xff\xcc\x7b\xc4\x4d\xab\x7f\xa0\x2a\x38\x36\xea\xe3\x96\xf9\xed\xe4\x8d\x6d\xee\xa3\x33\xb0\xa9\x90\xeb\xbc\xd1\xb3\x36\xbb\x73\xd8\xe7\x2c\x72\xe1\x24\x49\xf1\xca\x72\x0a\x3b\xcd\x97\x88\xd1\xdc\xdd\xe5\x12\x14\xb7\x71\xa1\xca\x13\x89\xeb\xb5\xa0\x56\x45\xac\xf9\x73\x15\x65\x1a\xe8\x86\xec\xd5\xf0\x09\xa7\xcc\x62\xbf\xc4\x94\x59\xb7\x1f\xea\x3f\x8a\xdc\x05\xd3\x71\x29\x78\x1a\xc9\x07\x3e\xb8\x3f\x1e\xeb\x1f\xc8\x4a\x90\xc8\x31\x6c\x36\x16\x42\x59\xa7\xc2\x4e\x5a\x20\x0c\x35\x3e\xbd\x7b\xf2\x32\x4e\xff\x52\x16\x80\xb2\x18\xa8\x65\x4b\x6d\xf7\xb0\x46\xaf\xdc\x85\xa7\x8c\xfe\xe1\x74\xa6\xe9\x19\x78\xd4\xaf\x65\x11\xd3\x07\x99\x19\x5d\xf4\x28\x86\xc8\x32\x7d\xcc\x62\x4c\x29\x12\xf8\x3f\xe1\xbb\x63\x02\xec\x71\xa8\xf0\x98\xd5\xe0\x56\xd8\x95\x95\xc4\x60\x06\x2d\x29\xa5\x54\x6e\x5b\xa7\x7e\x0a\x17\x9a\x84\x8f\x03\x3e\x11\xaf\xc1\xa1\x98\x97\xe8\x3c\x2a\xb7\xeb\x58\x20\x72\x22\x15\x67\x67\xeb\xdb\x2e\x24\x26\xae\x2c\x59\x4c\x20\x5d\xa5\x96\x50\x28\x3b\x33\xcb\xf5\x0a\x77\xd6\x07\xde\x9e\x2f\xfe\x0f\x08\x0f\xd7\x73\xc7\xe0\x3f\x20\x50\x5d\xd0\xcb\x15\xcd\x89\x24\xcd\xd6\xb8\x7d\x7f\x61\x5b\xcc\xd2\xeb\x47\x83\x95\x61\xd7\x9a\x02\xca\x9c\xde\x0f\xde\x19\xb5\xa0\xc2\xa9\x0b\xd4\xa0\xc7\x36\x1b\xfd\xad\x53\x74\xac\x42\xb5\x16\x11\x15\x75\x9c\xfa\x2a\xc0\x8c\x16\x79\x5a\xb5\x2c\x84\xc5\x40\x71\x0b\x1d\x1d\x50\x06\xf2\xab\xa0\x98\xc6\xb6\x82\xa5\x1f\x03\xff\x5d\x79\xb6\xbc\xe0\x20\xce\x72\x6f\x7f\xa2\xe7\x68\x51\x38\x08\x7d\x60\x9c\x05\x05\x4a\x9f\x4c\x45\x68\x15\x2e\x89\x00\xd8\x66\xbd\x4a\x98\x0b\x07\xd3\x5b\x83\x36\x47\xd1\xf4\xe2\x65\x75\xd4\xde\x1c\x7a\x7c\xcf\x5c\xd1\x19\xd6\xdb\x4c\x72\xfb\x9c\x24\xe3\xa0\x85\xec\xdd\xe5\x21\xff\x18\xbe\xc6\xc1\x6c\x93\x14\x57\xcd\x8e\x26\x46\x1d\x48\xb5\x5c\x21\x1a\x27\xba\x49\x86\x63\xb3\x4e\xa0\xdc\xfd\x8c\xdf\xa1\x29\x00\xfe\x83\x67\xab\xbe\xac\x8e\x4e\xb1\xa1\x80\x36\xc9\xc1\x69\x49\x35\xa5\x73\xb6\x1a\xfc\x05\xc1\x26\x5a\xaf\xb6\xef\x58\x4e\x82\x3b\x84\x27\x64\xb7\x1d\xca\x33\x18\x37\x64\x9a\x51\xd0\xc9\x6c\xef\xec\x43\x58\x35\xb8\xf4\xb5\xda\xc5\xd1\xf2\x4b\xe9\x4d\x53\x78\xa1\x66\x4e\xfc\x1d\xaf\x55\x70\x15\x65\x7a\xdb\x77\x88\x1c\x5d\x18\x1c\xd9\xd1\xf1\xd3\xd9\x6b\xf7\x4d\x51\x67\x93\x02\x85\xb6\xf9\x8f\xef\x31\xbb\xef\x73\x78\xcf\x2f\x12\xc4\xc4\x79\xf9\x60\x76\xd8\x17\x0d\x76\x8d\xfd\x2f\xe8\x23\xcd\x14\xd6\xd7\x05\x9d\x75\xd9\x54\x7a\xb2\x2a\xda\x6f\xd1\xa3\x64\xae\x76\x29\xe6\xf7\xe4\x66\xa4\xc8\xa4\x94\x83\xe4\x55\x5f\x6c\x08\x81\xfd\x2c\xee\x97\x92\x32\x47\xf2\xca\x83\x9f\x88\xb1\xed\xa7\xc3\xb7\xc7\x5f\x53\x0c\x0f\xd6\x0b\x85\xe8\xb1\x0d\x4b\x58\xd7\xb8\x81\x5b\xbf\x1e\x4f\x42\xa1\x6b\x25\x22\x58\x88\xbd\xa2\x47\xd4\x6b\xe3\x55\x13\x25\xb6\x06\xf6\x1c\xe7\x76\xa9\x2f\x04\x68\x84\xfd\x27\x5e\x82\xd4\xc0\x87\x61\xb6\x0d\x69\x8c\x5a\xdd\xe7\x8d\xed\x62\xd8\x83\x5a\x1b\x23\xb3\xff\x96\x57\x6b\x2c\x19\x8f\x72\x2e\x76\xea\x22\x66\x73\x88\xa4\x4e\xd3\x16\xea\x6d\xc5\xbe\x4b\xd8\x40\x43\x57\x2a\x2a\xfa\x19\xcd\x9a\x84\xef\x5f\xfc\x28\xfb\x0f\x68\x9c\x4c\x25\x26\xce\xc2\x61\x50\x2f\x1e\x0a\xf6\x65\xcb\xde\xf5\x0e\x3a\x66\x9c\x0a\xa1\x36\x43\x07\xc8\x9d\x76\x6d\x58\x69\xe2\xc9\xe4\x14\xca\x21\x67\x35\xc0\x18\x26\xee\xe4\xea\x8b\xcb\x09\xb6\x7a\x8d\xd8\xf7\xed\xb6\x85\x36\xc6\xee\xfa\x0f\xa0\xd7\x8f\x4a\x86\xbd\x70\x48\x2d\x98\x52\xe4\x82\x91\xd1\xe1\x6a\xd1\x14\x34\x77\x9a\x27\x86\x1a\xf8\x19\x2a\x64\x27\x50\x84\xe7\xd9\xe0\x60\x4c\x52\x07\x3c\x33\x24\xb9\x57\x7b\x08\x80\x73\xab\x27\x00\x41\xd0\x41\xcf\x5f\xf1\x88\x31\xb8\x0e\x00\xa2\x73\xb6\x86\x00\x59\xbe\xc4\xa6\xc4\x19\x02\x64\x4e\xf9\x23\xe8\x90\xd5\x58\xb5\xa9\x6e\xf9\xee\xfe\x19\xde\x12\x07\x35\xe9\x89\x87\xa9\x8d\x53\xa5\x6e\x32\x26\xc5\x76\xcd\x2e\xf4\x86\xae\x13\x8f\xf3\xb6\x2e\xae\x33\xca\x91\xf8\xb7\x7d\x3a\x98\xf5\x83\xe8\x63\xd4\xeb\xe5\x3d\x0b\x3f\xa9\x7c\x47\x68\x28\x05\x93\xf9\x35\xf6\x14\x25\x95\xed\x15\x05\x7a\xdf\x8b\x60\x14\x86\x20\x49\x3a\xfe\xb5\xff\x5d\xe1\x7b\x6a\xc2\x6d\x5b\xbb\x7c\xf7\xf4\x71\x32\x64\x2e\xbe\x73\xde\x00\x51\xf0\x73\x61\x0b\x0c\x1e\xae\xf6\x74\x99\x19\xcf\x0e\x87\x14\x4c\x0d\x8f\x70\xee\xab\xb7\xfe\x6c\x2e\x58\xf9\x14\xe5\x44\xe8\xbe\x21\xc2\xf3\xa6\x02\xd6\x1c\xfc\xf0\x17\x65\xe4\x9c\xbc\xd0\xa6\xf9\xb1\x61\x6e\xc5\x6a\x4d\xe6\xe5\x2b\xc9\x79\x84\x0a\x84\x2d\x9b\x2d\xd4\xb5\xd5\x9d\x15\xb3\xce\x85\x13\x8b\xc9\x8c\x1e\x25\x4c\x84\x85\x3b\x67\x26\xb6\xfd\xb7\xbc\x79\xe9\x0d\x34\xbe\x3d\xd8\x6c\x4d\xef\xbf\xac\x94\x38\x80\x29\x2f\xec\x0d\x99\x5c\xdb\x52\x44\x51\x4d\x11\x51\x8e\xfe\x79\x20\x4d\x53\xc9\xcd\xa4\xa4\x87\xbf\x30\xe9\xff\x7f\x28\x6e\x53\x6a\xc1\xfe\x9f\xa1\xa7\x1f\x3e\xed\x0e\x47\xf8\x47\x1e\x88\xdb\x19\xfc\xd3\xe3\x19\x76\x98\x96\x97\x98\xf2\x6d\x5c\x9c\x4b\x8a\x7b\x93\x5a\x0f\xaf\x39\x5d\x2b\xa9\xee\x8c\x57\xe1\x37\x47\xad\x4d\x01\xa2\xee\xca\x7e\x85\x3f\x9c\x52\x73\xfc\x16\x18\x54\xc2\xe9\x66\xf8\x53\xa4\x88\x88\x44\x44\x22\x91\xed\x0b\x3c\x59\x31\x5f\x8c\xba\xe2\xc9\xa4\xaf\x08\x4d\x10\xcb\x4c\x7e\x64\x00\x01\xb7\xf3\x40\x13\x2d\x80\x47\x4c\x6d\xaa\x0e\x00\x9c\x38\x0d\xf0\xfe\xb5\x7d\x5e\xb1\xed\x8b\x40\xcd\xf2\x44\x6c\x8a\x42\x4d\x48\xeb\xe5\x89\x7d\x92\x2e\x42\xf2\x5b\x98\x83\x63\x95\xdb\x51\x3e\x49\x04\xfc\x25\x21\xac\xca\x53\x03\xac\x57\x64\x54\xe6\x02\xd4\xb3\x55\x20\x73\x68\x18\xa8\x46\x83\x79\x00\x0f\x8f\x30\xf9\xe3\x7d\x05\xc7\xbc\x1f\x16\xec\xc9\xac\xb0\xf8\xc6\x30\x96\x67\x75\x57\x5a\x40\x64\xa7\x70\xf7\xb5\x3f\x7c\xa7\xcc\xc0\x0b\xdb\x71\x19\x5d\x53\xcf\x21\xb7\x48\x20\x66\x52\x20\xc0\x57\x85\xb2\x25\xb2\xcb\xe2\x85\x5a\x5a\xe4\x0b\x9b\xce\x9e\x1e\xdd\xb7\x8a\x9e\x4c\x08\x25\xfb\x47\xff\xf9\xe6\xf3\x7a\x95\x54\xd9\xee\x04\x6c\xd1\x8a\x30\x1d\xae\xe2\x6e\xc5\xee\xf4\xf1\x01\x25\x6e\x0c\x59\xdf\x35\xcb\xb5\x19\x2f\x80\x16\x2b\xa3\x93\x7d\xbf\x36\x19\x98\x7b\xf1\x8b\x1d\x69\xd6\xe6\xe0\xc4\x2f\xea\xd7\xf0\xed\x6d\x2c\xf5\x4d\xa7\x8f\x87\x49\x60\xe4\x45\xa1\x08\xb7\xbb\x09\x87\xcb\x94\x27\xe1\x02\x3a\x1c\x85\xc2\x72\xc1\x0b\xca\x78\x1f\x98\xc7\x6e\x10\x67\x39\x24\xe6\x58\xe7\x36\xcc\x54\x4a\xfc\x0c\xde\xcd\xe8\xe5\x8d\x14\xa1\x8e\x4b\x74\x21\x50\x75\x1a\x46\xa1\x4d\x90\xd7\x10\xa9\xea\x82\x26\x6e\x46\x65\x4b\xbc\x15\x36\x85\xc1\x95\x99\x8b\x09\x23\xcc\xe3\x13\x50\xb7\x9b\x20\x39\xf2\x38\x55\xdc\x3b\xa1\x14\x38\xb1\x5c\xc0\x3a\xaa\xd9\xd3\x1b\x58\x19\xc4\xb4\x12\x34\xe9\x3a\x30\x61\x55\x47\x9a\x6b\xd4\x5d\xf8\x4e\x1c\xf9\xe8\xd8\xea\x0e\x89\x6d\x92\x88\xd2\xe4\x8d\x87\x30\xd8\x6b\xf8\x99\x7c\x62\xa8\x37\x8a\xd9\x59\x25\x67\x2d\xef\xba\xa1\xc9\xcb\xa3\x15\xce\x1e\x64\xf8\x61\x6b\x17\x4b\x88\xc5\x7a\xb7\x80\x74\x8a\xe9\x6c\xdb\xe3\x6d\xc4\xd7\x90\x54\xfd\xd7\xbe\xc3\xb4\x0b\x1f\xc7\xb1\x26\x6e\x19\x7c\xa7\xfe\x41\xd0\x74\x3a\xd9\xa8\xa1\x04\x30\xa4\xe1\xcc\xed\xf8\xaa\x48\x62\x3f\xff\xa2\xbf\xd3\x30\x36\x4b\x0e\x3a\xa1\xdb\x7d\x9b\x9a\xa4\xca\x8e\x17\xd9\x3c\x91\x6d\x6a\xfe\x57\xd3\x3f\x7b\x05\x9b\x67\x0b\xba\x34\xbc\xee\xd5\x11\x65\xff\xc0\xdc\xa6\xaf\x53\x2e\xb3\xef\x97\x6b\x29\x6e\x97\x5c\xe2\x5b\x40\xec\x63\x9c\xa4\x35\x93\xb2\x59\x46\xba\x82\xa8\x19\xe8\xf1\xaf\xa7\xdf\xa3\x45\xf3\x5c\xc0\x8b\xf3\xe7\x73\x02\x88\x6c\xaf\x08\xe1\x43\x24\x45\xf6\x7d\xc5\x9c\x69\x85\xe7\xf8\xc9\xbb\xc8\xa6\x8a\x39\x25\xe2\x0c\x14\xbd\xd2\xb6\x92\x2b\xc9\x24\x32\x1f\x58\x23\xdf\x51\x18\x34\xf2\xa2\x9e\x4d\x7e\x32\x0f\x96\x3c\x7a\xd3\xa1\x52\x22\xaf\xa2\x2a\x98\x37\x51\x47\xfb\x3f\x43\x33\xf5\xb8\xc1\x39\xa1\x04\x5d\x3c\xc6\xde\x57\xb2\x4a\x23\x41\xcc\x16\xb3\xdf\xe0\x69\xa3\x58\x65\xb8\x52\xc2\xf8\x4f\xd4\xec\x28\xec\x17\x8f\xd0\xb9\xff\x32\xe1\xe5\x29\xbf\x3d\xc9\x69\xae\x17\xdb\x13\x96\xc2\xcb\xa7\x4b\x6a\xd4\xb8\x32\x07\xea\xb4\xb1\x2c\x93\x60\x4d\xa7\xeb\xbd\x03\x9b\xae\x1e\xa1\xcb\xf5\xc9\x79\x87\x0e\x8e\x87\xae\xc0\xc8\x83\xe8\xb9\x52\xbe\xc1\x98\x67\x60\x40\x3b\x19\x3e\x16\x5f\xff\x20\xff\x51\x60\xa4\x34\xbd\x25\xa7\xcb\xec\xc4\xf8\xb9\xb7\xa5\x5b\x41\x29\x6f\x96\x09\x34\x2b\x8a\x76\xaf\xb6\xab\x98\x91\xbd\x17\x42\x70\x8a\x99\xf3\x4a\x56\xef\xc1\x39\x20\x0f\x1b\x5f\xe1\x57\xbb\x27\x62\x40\xe7\xe2\xa0\xa0\xf4\xea\x59\x1a\xc0\xb2\x4a\x21\xcc\xd1\xcc\x4e\xf6\xc8\xba\xa0\x82\xde\xa2\x3f\xe5\x49\x90\x1e\xcb\xe7\x8c\x47\x4b\x27\x54\x33\x49\x05\x9f\x91\x15\xa5\x91\x39\xe4\x5e\xe6\xf9\xff\x40\x52\x38\x54\x22\xc9\x38\x61\x59\x4f\xe9\x89\xfa\x84\xd2\x82\x1d\x63\xea\x55\xd9\x32\x7d\x70\x19\xe9\x12\xf7\xeb\xae\xbf\x24\xbf\x21\x16\xcc\xc1\xa6\xa2\x83\xc3\x97\xba\x3c\xaa\x5e\xa8\xd4\x4a\xc7\x36\x78\x3f\xb4\xef\x27\x15\x95\x70\xae\xf5\x11\x56\xe9\x0e\x69\x4f\xaa\x6d\x1a\x9e\x19\x21\xd8\xd1\xb1\x87\xc3\xea\x36\x7f\x33\x08\xcf\xe1\xb7\x41\x2a\x55\x8b\xf3\xce\x7f\xfe\xf3\x0f\x89\x27\xe4\x96\x12\x6e\x3e\xfe\x17\x1f\x4b\xee\xf7\x1b\xae\x80\xd3\x63\xf5\xb7\x3a\xa8\xf7\xa9\x12\x82\x42\x6c\xa3\xc7\xf0\x88\xe4\x25\x56\xc5\x65\x45\xbd\x0d\xe1\x96\x96\xd7\xb6\x07\x37\x65\x80\x08\xfd\x63\xc2\x3f\xef\xdc\xf5\x5a\x33\x58\x46\xb1\xa1\xda\xba\x80\x40\x4b\x4f\xc4\x87\xd1\x9f\x32\xe3\xad\x86\x81\x39\x0f\x2c\x57\xa2\x09\x74\x24\x4f\xd1\x12\xdd\x0c\x88\x30\xe4\x11\x60\xd5\xd7\x40\x59\x95\x13\xae\x0c\x03\xa9\x08\xa0\x08\xeb\x41\x19\x68\xd5\x3f\x5b\x9c\x1d\x8d\xd4\xf3\xf0\x36\x55\x92\xe6\x26\xf4\xf2\x01\x68\x52\x1a\x58\x73\x97\x67\xb1\x8c\xf2\x40\x0c\xa6\xf6\x97\xcc\xea\x44\x63\xaa\x90\x38\x90\x92\xf3\x5e\xca\x8a\x4b\x1b\x7c\x5d\xa0\x42\x83\xa6\x7b\x0f\xb1\x3f\x36\x04\x73\x76\xbf\x35\x91\xae\xbd\x37\xab\xf5\x08\xb3\x66\xf5\xb6\xf5\x44\x2f\x41\xc0\x57\x2f\xc8\xea\x15\xb5\xd9\x2c\xc3\x47\x9d\x01\x8e\x57\xd7\x2d\xbc\x1b\x03\x71\x0d\xae\x0a\x3e\x27\xf9\x2a\x6d\x96\xf0\x19\x2b\x7d\x63\xaf\x28\x27\xe6\x93\x92\x6c\x08\xf1\x30\x39\xe8\xf8\xc9\xec\x97\xd5\xff\xb3\x4e\x5e\xc2\x5f\x17\x55\x96\x4d\xf0\x48\xd2\x2f\x48\xee\xd1\x75\x6b\xf1\x66\x0c\x61\x9f\xb1\xa0\x36\x90\x1f\xd9\xad\x59\x04\xee\x35\x4e\x90\x17\x4b\x12\xee\x8d\x44\x99\xe1\x8f\x69\x9f\x6f\x8b\xdc\xfa\x19\x59\xb5\xad\xdb\xa3\xf4\x0e\xeb\xc7\x27\x59\x4c\x7d\x26\x7f\x5f\x12\x3e\xd2\x5d\xb5\x0e\xb9\x82\x88\xc2\xd5\x14\x16\xa1\x20\x59\x7f\x4e\xc0\xeb\xaa\x08\xa9\xf1\xaf\xa7\xa9\x2d\x63\xde\x95\x41\xd1\xd1\x13\xc8\xd6\x45\xbf\x02\x79\xdb\x6e\x7e\x1d\x0a\xe7\x1b\x78\x5e\x47\xe1\x40\x63\xec\xfb\x14\x86\x04\xd4\xb9\xe2\xba\x9a\xc9\x07\x44\xb6\xbf\xaa\xb6\x37\xe3\xe1\x5d\x4e\xea\x24\xcb\x4e\x9c\x76\xd8\xef\xa7\x50\xa7\xbe\x5c\x52\x41\xa4\x6c\x59\x6f\xd3\x96\x88\xb0\xdd\x52\xe5\x40\x64\x1c\x3f\x98\xd7\x09\x5c\x63\x47\xdd\xeb\xd3\x1c\xce\x61\x93\x80\x46\x07\xd3\x4f\xf8\x2f\x3e\x0d\xcc\xc9\x81\xa6\x8e\x0d\x69\x0a\x8b\x80\x6f\xf7\x57\xbb\x11", 4096); syscall(SYS_ioctl, (intptr_t)r[2], 0xc0f24413, 0x100005c0); break; case 10: *(uint8_t*)0x10000000 = 0; *(uint8_t*)0x10000001 = 0; *(uint8_t*)0x10000002 = 0; *(uint8_t*)0x10000003 = 0; *(uint8_t*)0x10000004 = 0; *(uint8_t*)0x10000005 = 0; *(uint8_t*)0x10000006 = -1; *(uint8_t*)0x10000007 = -1; *(uint8_t*)0x10000008 = -1; *(uint8_t*)0x10000009 = -1; *(uint8_t*)0x1000000a = -1; *(uint8_t*)0x1000000b = -1; *(uint16_t*)0x1000000c = htobe16(0x8100); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 1, 0, 3); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 1, 3, 1); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 4, 4, 12); *(uint16_t*)0x10000010 = htobe16(0x806); *(uint16_t*)0x10000012 = htobe16(1); *(uint16_t*)0x10000014 = htobe16(0x800); *(uint8_t*)0x10000016 = 6; *(uint8_t*)0x10000017 = 4; *(uint16_t*)0x10000018 = htobe16(9); *(uint8_t*)0x1000001a = 0xaa; *(uint8_t*)0x1000001b = 0xaa; *(uint8_t*)0x1000001c = 0xaa; *(uint8_t*)0x1000001d = 0xaa; *(uint8_t*)0x1000001e = 0xaa; *(uint8_t*)0x1000001f = 0xbb; *(uint32_t*)0x10000020 = htobe32(0xe0000001); *(uint8_t*)0x10000024 = 0xaa; *(uint8_t*)0x10000025 = 0xaa; *(uint8_t*)0x10000026 = 0xaa; *(uint8_t*)0x10000027 = 0xaa; *(uint8_t*)0x10000028 = 0xaa; *(uint8_t*)0x10000029 = 0xbb; *(uint32_t*)0x1000002a = htobe32(-1); break; case 11: memcpy((void*)0x10000040, "\x0f\x5a\x60\xb0\x06\xc4\xe1\x01\x6b\xd7\x65\x2f\xc4\xe1\xf8\x11\x81\x00\x00\x00\x80\xc4\xc1\x19\x60\x18\x3e\x67\x3e\x0f\x01\xd9\xf2\xe1\xab\xf3\xee\x66\x0f\x14\x8b\xf1\xff\xff\xff", 45); syz_execute_func(0x10000040); break; case 12: break; } } int main(void) { syscall(SYS_mmap, 0x10000000, 0x1000000, 7, 0x1012, -1, 0); use_temporary_dir(); do_sandbox_none(); return 0; } :350:11: error: use of undeclared identifier 'SYS_freebsd12_closefrom' syscall(SYS_freebsd12_closefrom, (intptr_t)r[1]); ^ 1 error generated. compiler invocation: clang [-o /tmp/syz-executor823474734 -DGOOS_freebsd=1 -DGOARCH_386=1 -DHOSTGOOS_freebsd=1 -x c - -m32 -O2 -pthread -Wall -Werror -Wparentheses -Wunused-const-variable -Wframe-larger-than=16384 -static -lc++ -Wno-overflow] --- FAIL: TestGenerate/freebsd/386/5 (1.09s) csource_test.go:108: opts: {Threaded:true Collide:false Repeat:true RepeatTimes:0 Procs:1 Slowdown:1 Sandbox:none Fault:false FaultCall:0 FaultNth:0 Leak:false NetInjection:false NetDevices:false NetReset:false Cgroups:false BinfmtMisc:false CloseFDs:false KCSAN:false DevlinkPCI:false USB:false VhciInjection:false Wifi:false IEEE802154:false Sysctl:false UseTmpDir:true HandleSegv:false Repro:false Trace:false} program: getsockopt$inet6_sctp_SCTP_EVENT(0xffffffffffffff9c, 0x84, 0x1e, &(0x7f0000000000)={0x0, 0x4, 0x1}, &(0x7f0000000040)=0x8) getsockopt$inet6_sctp_SCTP_MAX_BURST(0xffffffffffffffff, 0x84, 0x19, &(0x7f0000000080)={0x0, 0x7fff}, &(0x7f00000000c0)=0x8) r0 = dup(0xffffffffffffffff) setsockopt$inet6_sctp_SCTP_ADAPTATION_LAYER(r0, 0x84, 0x8, &(0x7f0000000100)={0x7}, 0x4) readv(r0, &(0x7f0000000540)=[{&(0x7f0000000140)=""/149, 0x95}, {&(0x7f0000000200)=""/179, 0xb3}, {&(0x7f00000002c0)=""/172, 0xac}, {&(0x7f0000000380)=""/182, 0xb6}, {&(0x7f0000000440)=""/206, 0xce}], 0x5) thr_wake(0xffffffffffffffff) r1 = socket$inet_udplite(0x2, 0x2, 0x88) freebsd12_closefrom(r1) r2 = open(&(0x7f0000000580)='./file0\x00', 0x4, 0x40) ioctl$DIOCGETSTATE(r2, 0xc0f24413, &(0x7f00000005c0)="2a368a90b488d04ee1eccd139778043b00a6f81a3627b593b0dfce33265cda8fba8b0fa538b3e364ad1d1f7de1011c63f592a64dd0ec953f9c050f991f42d24d7bc47c4d5bf323e393605e59a1eb5bc4e948f83890911ed35b53a2b0d63db79dc21d6190f8b434d6ff85e54fb9a28a7566d1a24337e72e82acc9e518339acac7dd8960a1c9c5cb3da9e6bc0b697e9dbbc60fa8b72c3719286bf44c2e8fc8356e9125eae9bed216f349c292c989d7dcd252dfb79c4fdbdc865109f1e3cf9cd67cfa8babb7d3627ce0080910c5755c92cbb2c159172a65ea8a2085f4ce10e1436ef2f7d6f1db702a387cd35681293331bd1bdbd690274a7c372f84e4d5748791d707ee5c127eda8b84596b0c10890c881006beb38ad56d139d8c74f14f3598de551ee3a13466e67cb3d2c5fd909061522058ffbe9ae431325544c894b9841a4c253632a332c6e0d881645f90b6337db99b7fad1bd162f73d11ce5e57d5f321fb68a795c990662a35706af845b5383fe50ba8637613dd43aa7cf20020355218e060af2658866349197f30c835351bd69683baaab8be6b4da04fb35a423314fab610b8d1cf0440fedb28a5e19584ef7867bd962ba4ede513af03dda669f76c67d28fb507d5762c61d528f1cf3a7c563eee1c04106254ce3fd821c17a0defc37d79a5de7ef9352c7b411c953958d254d0d3e5ae618a68a53e45809d493c474a208ccc0f170df4836d0593b7b7ce874fa01fe0415a594f941c31f0784aad394f06b8537029555ccc73eaab0b36846fe5cc6e92db0c90a62d1d36c382c351921789dfbe0f60b13db0814aaf4fa6f813a7cf2ad12ebe1050eef92768c313718d8db202e3d1093dcf5933451efd9b72ee4ef75dfc0ea0afffb81bbee550382b6b1212cea097b709aec7c0a85799127d01376f7bd6f255732972f889b6843f615478ee23124737f813b18f3133af12b4e41e70bea058b00a5f965ed2377b48916bc2a7162adbf7bc9ca11aeaaf88c2f5229af6dd3861574a0d5d5ae482f2d7e86d172005cca565b12b199a7d81087d85776d613940b48735266d45a4ad11e168e89b893e650b984b483abb318f432f13c61f26f3deabc6b45dcf5ff4579da89a9d23251d1a6bec122cb210fc3afa89102395e1d26b14ca4180c1b6fe0b3000049550283b618ab1fd6b165855b297d9457ac54946fb99e6f0d8872db87934347b6d9a38a731bf8bd08f2a7a7d80d4cf24fa9a16c209a18494133d6dd0d292efeba7872c4d7bdfafd416e634cf90ab4dc9bccc643227a05552eee0f916ec202dcb011c8394b10996873a0a4b7aee1514f595d23289a3bf62085b0aeea0009206e7a7061ad866352241708acbcf3c2fc0fdcaaaa8b3be8e510b99e04b96ddafa9f8483b7a568c5ebaddad5677d9144a270d0444aea3c0775d241d79baea30dc4bb19a712471f112838c7525496d4a8fa66658610347d490af85305ceabf0f35ac277f2ef1b6a8e5813ce0bea587e627d725f1db1241222acd41e16c8a32bdb40778d4a10f87b1e90e006dfc03d2934589d25965240ee9c21419a2aa5bd8f3fcd3208f9b52155513a6da73468dc0703102bcca0eba18e88c19da64ab5c6bf6cb8109730153693332f7e160862719dc08175ed074f5bf2887705501331cf75254fce0e145ac2241875293036f2aa96592194073d04754c26f19e7763332b43d0287a28347d5155bacfd32628f500d9e9c04f5369f6317e606e422f98c48b11f755b2b0fdc79494a769700d35a88a330f02cab2fb7b65049e2d1e350a6e02d5d54ac7c85f268c0eaf77071d5acabed99429030d00b30c4caa21ce322d4f780e892201129ff772d22cc4d4c274b479948d22acfc1760b2917ff308e9a3aa22779bd0f453d11e0dee788dcf95b7be90c3b3b3a7fe535da503c381e346eb2a0b0e375ad726ee2a38919810d5c545edcea1b23109a3fb68e30c01cc704a9d23ae55d18cc9fdff02bd484d59f468d75a796657fdca59f55d4be7efd7378a31685334adc0cacaef9af5649da85dc6c5989cf8e2b9977a62a8ca8bc27782b1b3028a4de9a0e87dbab7879144e40a811f0b1b2880d26823c990adeb7df41116fcf6022a08d87ac7c63ecdff796dafa082e5cd85d6c3f17f8740ea1e9a0c886e0cd7074c45dbc2dc7b34c6859e06a0cee9b20ce43724a414eb77b0b804dffcc7bc44dab7fa02a3836eae396f9ede48d6deea333b0a990ebbcd1b336bb73d8e72c72e12449f1ca720a3bcd9788d1dcdde51214b771a1ca1389ebb5a05645acf97315651ae886ecd5f009a7cc62bfc49459b71fea3f8adc05d37129781ac9073eb83f1eeb1fc84a90c8316c36164259a7c24e5a200c353ebd7bf2324eff521680b218a8654b6df7b046afdc85a78cfee174a6e91978d4af6511d30799195df42886c8327dcc624c2912f83fe1bb6302ec71a8f098d5e056d89595c460062d29a5546e5ba77e0a179a848f033e11afc1a19897e83c2ab7eb58207222156767ebdb2e2426ae2c594c205da59650283b33cbf50a77d607de9e2ffe0f080fd773c7e03f20505dd0cb15cd8924cdd6b87d7f615bccd2eb47839561d79a02ca9cde0fde19b5a0c2a90bd4a0c7361bfdad5374ac42b5161115759cfa2ac08c16795ab52c84c540710b1d1d5006f2aba098c6b682a51f03ff5d79b6bce020ce726f7fa2e7685138087d609c05054a9f4c4568152e8900d866bd4a980b07d35b833647d1f4e26575d4de1c7a7ccf5cd119d6db4c72fb9c24e3a085ecdde521ff18bec6c16c931457cd8e26461d48b55c211a27ba498663b34ea0dcfd8cdfa12900fe8367abbeac8e4eb1a18036c9c1694935a573b61afc05c1265aafb6ef584e823b842764b71dca331837649a51d0c96cefec435835b8f4b5dac5d1f24be94d5378a1664efc1daf557015657adb77881c5d181cd9d1f1d3d96bf74d5167930285b6f98fef31bbef7378cf2f12c4c479f96076d8170d768dfd2fe823cd14d6d7059d75d9547ab22ada6fd1a364ae7629e6f7e466a4c8a49483e4555f6c0881fd2cee97923247f2ca839f88b1eda7c3b7c75f530c0fd60b85e8b10d4b58d7b8815bbf1e4f42a16b25225888bda247d46be3551325b606f61ce776a92f046884fd275e82d4c08761b60d698c5adde78ded62d8835a1b23b3ff96576b2c198f722e76ea22667388a44ed316ea6dc5be4bd84043572a2afa19cd9a84ef5ffc28fb0f689c4c2526cec261502f1e0af665cbdef50e3a669c0aa1364307c89d766d5869e2c9e414ca216735c01826eee4ea8bcb09b67a8dd8f7edb68536c6eefa0fa0d78f4a86bd70482d9852e48291d1e16ad11434779a27861af8192a64275084e7d9e0604c52073c3324b9577b088073ab270041d041cf5ff18831b80e00a273b6860059bec4a6c41902644ef923e890d558b5a96ef9eefe19de120735e98987a98d53a56e3226c576cd2ef486ae138ff3b62eae33ca91f8b77d3a98f583e863d4ebe53d0b3fa97c4768280593f935f6142595ed15057adf8b60148620493afeb5ff5de17b6ac26d5bbb7cf7f47132642ebe73de0051f073610b0c1eaef6749919cf0e87144c0d8f70eeabb7fe6c2e58f914e544e8be21c2f3a602d61cfcf01765e49cbcd0a6f9b1616ec56a4de6e52bc979840a842d9b2dd4b5d59d15b3ce85138bc98c1e254c84853b6726b6fdb7bc79e90d34be3dd86c4defbfac943880292fec0d995cdb5244514d11518efe79204d53c9cda4a487bf30e9ff7f286e536ac1fe9fa1a71f3eed0e47f8471e88db19fcd3e3197698969798f26d5c9c4b8a7b935a0faf395d2ba9ee8c57e13747ad4d01a2eeca7e853f9c5273fc161854c2e966f853a4888844442291ed0b3c59315f8cbae2c9a4af084d10cb4c7e640001b7f340132d80474c6daa0e009c380df0feb57d5eb1ed8b40cdf2446c8a424d48ebe5897d922e42f25b98836395db513e4904fc2521acca5303ac576454e602d4b35520736818a8468379000f8f30f9e37d05c7bc1f16ecc9acb0f8c630966775575a4064a770f7b53f7ca7ccc00bdb71195d53cf21b74820665220c05785b225b2cbe2855a5ae40b9bce9e1eddb78a9e4c0825fb47fff9e6f37a9554d9ee046cd18a301daee26ec5eef4f101256e0c59df35cbb5192f80162ba3937dbf3619987bf18b1d69d6e6e0c42fead7f0ed6d2cf54da78f874960e445a108b7bb0987cb9427e1023a1c85c272c10bca781f98c76e10673924e658e736cc544afc0cdecde8e58d14a18e4b742150751a46a14d90d710a9ea82266e46654bbc153685c195998b0923cce31350b79b2039f23855dc3ba11438b15cc03aaad9d31b5819c4b41234e93a306155479a6bd45df84e1cf9e8d8ea0e896d9288d2e48d8730d86bf8997c62a8378ad95925672defbaa1c9cba315ce1e64f8616b174b88c57ab780748ae96cdbe36dc4d79054fdd7bec3b40b1fc7b1266e197ca7fe41d0743ad9a8a10430a4e1ccedf8aa48623fffa2bfd330364b0e3aa1db7d9b9aa4ca8e17d93c916d6afe57d33f7b059b670bba34bceed51165ffc0dca6af532eb3ef976b296e975ce25b40ec639ca43593b25946ba82a819e8f1afa7dfa345f35cc08bf3e77302886caf08e1432445f67dc59c6985e7f8c9bbc8a68a3925e20c14bdd2b6922bc924321f5823df511834f2a29e4d7e320f963c7ad3a15222afa22a98375147fb3f4333f5b8c139a1045d3cc6de57b24a2341cc16b3dfe069a35865b852c2f84fd4ec28ec178fd0b9ff32e1e529bf3dc969ae17db1396c2cba74b6ad4b83207eab4b12c93604da7ebbd039bae1ea1cbf5c979870e8e87aec0c883e8b952bec1986760403b193e165fff20ff5160a434bd25a7cbecc4f8b9b7a55b41296f9609342b8a76afb6ab9891bd1742708a99f34a56efc139200f1b5fe157bb276240e7e2a0a0f4ea591ac0b24a21ccd1cc4ef6c8baa082dea23fe549901ecbe78c474b27543349059f9115a59139e45ee6f9ff4052385422c93861594fe989fa84d2821d63ea55d9327d7019e912f7ebaebf24bf2116ccc1a6a283c397ba3caa5ea8d44ac736783fb4ef27159570aef51156e90e694faa6d1a9e1921d8d1b187c3ea367f3308cfe1b7412a558bf3ce7ffef30f8927e496126e3efe171f4beef71bae80d363f5b73aa8f7a91282426ca3c7f088e42556c56545bd0de19696d7b60737658008fd63c23fefdcf55a335846b1a1daba80404b4fc487d19f32e3ad8681390f2c57a20974244fd112dd0c8830e41160d5d740599513ae0c03a908a008eb411968d53f5b9c1d8dd4f3f0365592e626f4f20168521a58739767b18cf2400ca6f697ccea4463aa90389092f35eca8a4b1b7c5da04283a67b0fb13f36047376bf3591aebd37abf508b366f5b6f5442f41c0572fc8ea15b5d92cc3479d018e57d72dbc1b03710dae0a3e27f92a6d96f0192b7d63af2827e693926c08f13039e8f8c9ec97d5ffb34e5ec25f1755964df048d22f48eed1756bf1660c619fb1a036901fd9ad5904ee354e90174b12ee8d4499e18f699f6f8bdcfa1959b5addba3f40eebc727594c7d267f5f123ed25db50eb98288c2d51416a120597f4ec0ebaa08a9f1afa7a92d63de9541d1d113c8d645bf0279db6e7e1d0ae71b785e47e14063ecfb148604d4b9e2ba9ac90744b6bfaab637e3e15d4eea24cb4e9c76d8efa750a7be5c5241a46c596fd39688b0dd52e540641c3f98d7095c6347ddebd31cce6193804607d34ff82f3e0dccc981a68e0d690a8b806ff757bb11") syz_emit_ethernet(0x2e, &(0x7f0000000000)={@empty, @broadcast, [{[], {0x8100, 0x1, 0x1, 0x4}}], {@arp={0x806, @ether_ipv4={0x1, 0x800, 0x6, 0x4, 0x9, @remote, @multicast1, @remote, @broadcast}}}}) syz_execute_func(&(0x7f0000000040)="0f5a60b006c4e1016bd7652fc4e1f8118100000080c4c11960183e673e0f01d9f2e1abf3ee660f148bf1ffffff") syz_extract_tcp_res(&(0x7f0000000080), 0x7fffffff, 0x7) csource_test.go:109: failed to build program: // autogenerated by syzkaller (https://github.com/google/syzkaller) #define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include static void kill_and_wait(int pid, int* status) { kill(pid, SIGKILL); while (waitpid(-1, status, 0) != pid) { } } static void sleep_ms(uint64_t ms) { usleep(ms * 1000); } static uint64_t current_time_ms(void) { struct timespec ts; if (clock_gettime(CLOCK_MONOTONIC, &ts)) exit(1); return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000; } static void use_temporary_dir(void) { char tmpdir_template[] = "./syzkaller.XXXXXX"; char* tmpdir = mkdtemp(tmpdir_template); if (!tmpdir) exit(1); if (chmod(tmpdir, 0777)) exit(1); if (chdir(tmpdir)) exit(1); } static void __attribute__((noinline)) remove_dir(const char* dir) { DIR* dp = opendir(dir); if (dp == NULL) { if (errno == EACCES) { if (rmdir(dir)) exit(1); return; } exit(1); } struct dirent* ep = 0; while ((ep = readdir(dp))) { if (strcmp(ep->d_name, ".") == 0 || strcmp(ep->d_name, "..") == 0) continue; char filename[FILENAME_MAX]; snprintf(filename, sizeof(filename), "%s/%s", dir, ep->d_name); struct stat st; if (lstat(filename, &st)) exit(1); if (S_ISDIR(st.st_mode)) { remove_dir(filename); continue; } if (unlink(filename)) exit(1); } closedir(dp); if (rmdir(dir)) exit(1); } static void thread_start(void* (*fn)(void*), void* arg) { pthread_t th; pthread_attr_t attr; pthread_attr_init(&attr); pthread_attr_setstacksize(&attr, 128 << 10); int i = 0; for (; i < 100; i++) { if (pthread_create(&th, &attr, fn, arg) == 0) { pthread_attr_destroy(&attr); return; } if (errno == EAGAIN) { usleep(50); continue; } break; } exit(1); } typedef struct { pthread_mutex_t mu; pthread_cond_t cv; int state; } event_t; static void event_init(event_t* ev) { if (pthread_mutex_init(&ev->mu, 0)) exit(1); if (pthread_cond_init(&ev->cv, 0)) exit(1); ev->state = 0; } static void event_reset(event_t* ev) { ev->state = 0; } static void event_set(event_t* ev) { pthread_mutex_lock(&ev->mu); if (ev->state) exit(1); ev->state = 1; pthread_mutex_unlock(&ev->mu); pthread_cond_broadcast(&ev->cv); } static void event_wait(event_t* ev) { pthread_mutex_lock(&ev->mu); while (!ev->state) pthread_cond_wait(&ev->cv, &ev->mu); pthread_mutex_unlock(&ev->mu); } static int event_isset(event_t* ev) { pthread_mutex_lock(&ev->mu); int res = ev->state; pthread_mutex_unlock(&ev->mu); return res; } static int event_timedwait(event_t* ev, uint64_t timeout) { uint64_t start = current_time_ms(); uint64_t now = start; pthread_mutex_lock(&ev->mu); for (;;) { if (ev->state) break; uint64_t remain = timeout - (now - start); struct timespec ts; ts.tv_sec = remain / 1000; ts.tv_nsec = (remain % 1000) * 1000 * 1000; pthread_cond_timedwait(&ev->cv, &ev->mu, &ts); now = current_time_ms(); if (now - start > timeout) break; } int res = ev->state; pthread_mutex_unlock(&ev->mu); return res; } #define BITMASK(bf_off,bf_len) (((1ull << (bf_len)) - 1) << (bf_off)) #define STORE_BY_BITMASK(type,htobe,addr,val,bf_off,bf_len) *(type*)(addr) = htobe((htobe(*(type*)(addr)) & ~BITMASK((bf_off), (bf_len))) | (((type)(val) << (bf_off)) & BITMASK((bf_off), (bf_len)))) static void sandbox_common() { struct rlimit rlim; rlim.rlim_cur = rlim.rlim_max = 128 << 20; setrlimit(RLIMIT_AS, &rlim); rlim.rlim_cur = rlim.rlim_max = 8 << 20; setrlimit(RLIMIT_MEMLOCK, &rlim); rlim.rlim_cur = rlim.rlim_max = 1 << 20; setrlimit(RLIMIT_FSIZE, &rlim); rlim.rlim_cur = rlim.rlim_max = 1 << 20; setrlimit(RLIMIT_STACK, &rlim); rlim.rlim_cur = rlim.rlim_max = 0; setrlimit(RLIMIT_CORE, &rlim); rlim.rlim_cur = rlim.rlim_max = 256; setrlimit(RLIMIT_NOFILE, &rlim); } static void loop(); static int do_sandbox_none(void) { sandbox_common(); loop(); return 0; } static long syz_execute_func(volatile long text) { ((void (*)(void))(text))(); return 0; } struct thread_t { int created, call; event_t ready, done; }; static struct thread_t threads[16]; static void execute_call(int call); static int running; static void* thr(void* arg) { struct thread_t* th = (struct thread_t*)arg; for (;;) { event_wait(&th->ready); event_reset(&th->ready); execute_call(th->call); __atomic_fetch_sub(&running, 1, __ATOMIC_RELAXED); event_set(&th->done); } return 0; } static void execute_one(void) { int i, call, thread; for (call = 0; call < 13; call++) { for (thread = 0; thread < (int)(sizeof(threads) / sizeof(threads[0])); thread++) { struct thread_t* th = &threads[thread]; if (!th->created) { th->created = 1; event_init(&th->ready); event_init(&th->done); event_set(&th->done); thread_start(thr, th); } if (!event_isset(&th->done)) continue; event_reset(&th->done); th->call = call; __atomic_fetch_add(&running, 1, __ATOMIC_RELAXED); event_set(&th->ready); event_timedwait(&th->done, 50); break; } } for (i = 0; i < 100 && __atomic_load_n(&running, __ATOMIC_RELAXED); i++) sleep_ms(1); } static void execute_one(void); #define WAIT_FLAGS 0 static void loop(void) { int iter = 0; for (;; iter++) { char cwdbuf[32]; sprintf(cwdbuf, "./%d", iter); if (mkdir(cwdbuf, 0777)) exit(1); int pid = fork(); if (pid < 0) exit(1); if (pid == 0) { if (chdir(cwdbuf)) exit(1); execute_one(); exit(0); } int status = 0; uint64_t start = current_time_ms(); for (;;) { if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid) break; sleep_ms(1); if (current_time_ms() - start < 5000) { continue; } kill_and_wait(pid, &status); break; } remove_dir(cwdbuf); } } uint64_t r[3] = {0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff}; void execute_call(int call) { intptr_t res = 0; switch (call) { case 0: *(uint32_t*)0x10000000 = 0; *(uint16_t*)0x10000004 = 4; *(uint8_t*)0x10000006 = 1; *(uint32_t*)0x10000040 = 8; syscall(SYS_getsockopt, 0xffffff9c, 0x84, 0x1e, 0x10000000, 0x10000040); break; case 1: *(uint32_t*)0x10000080 = 0; *(uint32_t*)0x10000084 = 0x7fff; *(uint32_t*)0x100000c0 = 8; syscall(SYS_getsockopt, -1, 0x84, 0x19, 0x10000080, 0x100000c0); break; case 2: res = syscall(SYS_dup, -1); if (res != -1) r[0] = res; break; case 3: *(uint32_t*)0x10000100 = 7; syscall(SYS_setsockopt, (intptr_t)r[0], 0x84, 8, 0x10000100, 4); break; case 4: *(uint32_t*)0x10000540 = 0x10000140; *(uint32_t*)0x10000544 = 0x95; *(uint32_t*)0x10000548 = 0x10000200; *(uint32_t*)0x1000054c = 0xb3; *(uint32_t*)0x10000550 = 0x100002c0; *(uint32_t*)0x10000554 = 0xac; *(uint32_t*)0x10000558 = 0x10000380; *(uint32_t*)0x1000055c = 0xb6; *(uint32_t*)0x10000560 = 0x10000440; *(uint32_t*)0x10000564 = 0xce; syscall(SYS_readv, (intptr_t)r[0], 0x10000540, 5); break; case 5: syscall(SYS_thr_wake, -1); break; case 6: res = syscall(SYS_socket, 2, 2, 0x88); if (res != -1) r[1] = res; break; case 7: syscall(SYS_freebsd12_closefrom, (intptr_t)r[1]); break; case 8: memcpy((void*)0x10000580, "./file0\000", 8); res = syscall(SYS_open, 0x10000580, 4, 0x40); if (res != -1) r[2] = res; break; case 9: memcpy((void*)0x100005c0, "\x2a\x36\x8a\x90\xb4\x88\xd0\x4e\xe1\xec\xcd\x13\x97\x78\x04\x3b\x00\xa6\xf8\x1a\x36\x27\xb5\x93\xb0\xdf\xce\x33\x26\x5c\xda\x8f\xba\x8b\x0f\xa5\x38\xb3\xe3\x64\xad\x1d\x1f\x7d\xe1\x01\x1c\x63\xf5\x92\xa6\x4d\xd0\xec\x95\x3f\x9c\x05\x0f\x99\x1f\x42\xd2\x4d\x7b\xc4\x7c\x4d\x5b\xf3\x23\xe3\x93\x60\x5e\x59\xa1\xeb\x5b\xc4\xe9\x48\xf8\x38\x90\x91\x1e\xd3\x5b\x53\xa2\xb0\xd6\x3d\xb7\x9d\xc2\x1d\x61\x90\xf8\xb4\x34\xd6\xff\x85\xe5\x4f\xb9\xa2\x8a\x75\x66\xd1\xa2\x43\x37\xe7\x2e\x82\xac\xc9\xe5\x18\x33\x9a\xca\xc7\xdd\x89\x60\xa1\xc9\xc5\xcb\x3d\xa9\xe6\xbc\x0b\x69\x7e\x9d\xbb\xc6\x0f\xa8\xb7\x2c\x37\x19\x28\x6b\xf4\x4c\x2e\x8f\xc8\x35\x6e\x91\x25\xea\xe9\xbe\xd2\x16\xf3\x49\xc2\x92\xc9\x89\xd7\xdc\xd2\x52\xdf\xb7\x9c\x4f\xdb\xdc\x86\x51\x09\xf1\xe3\xcf\x9c\xd6\x7c\xfa\x8b\xab\xb7\xd3\x62\x7c\xe0\x08\x09\x10\xc5\x75\x5c\x92\xcb\xb2\xc1\x59\x17\x2a\x65\xea\x8a\x20\x85\xf4\xce\x10\xe1\x43\x6e\xf2\xf7\xd6\xf1\xdb\x70\x2a\x38\x7c\xd3\x56\x81\x29\x33\x31\xbd\x1b\xdb\xd6\x90\x27\x4a\x7c\x37\x2f\x84\xe4\xd5\x74\x87\x91\xd7\x07\xee\x5c\x12\x7e\xda\x8b\x84\x59\x6b\x0c\x10\x89\x0c\x88\x10\x06\xbe\xb3\x8a\xd5\x6d\x13\x9d\x8c\x74\xf1\x4f\x35\x98\xde\x55\x1e\xe3\xa1\x34\x66\xe6\x7c\xb3\xd2\xc5\xfd\x90\x90\x61\x52\x20\x58\xff\xbe\x9a\xe4\x31\x32\x55\x44\xc8\x94\xb9\x84\x1a\x4c\x25\x36\x32\xa3\x32\xc6\xe0\xd8\x81\x64\x5f\x90\xb6\x33\x7d\xb9\x9b\x7f\xad\x1b\xd1\x62\xf7\x3d\x11\xce\x5e\x57\xd5\xf3\x21\xfb\x68\xa7\x95\xc9\x90\x66\x2a\x35\x70\x6a\xf8\x45\xb5\x38\x3f\xe5\x0b\xa8\x63\x76\x13\xdd\x43\xaa\x7c\xf2\x00\x20\x35\x52\x18\xe0\x60\xaf\x26\x58\x86\x63\x49\x19\x7f\x30\xc8\x35\x35\x1b\xd6\x96\x83\xba\xaa\xb8\xbe\x6b\x4d\xa0\x4f\xb3\x5a\x42\x33\x14\xfa\xb6\x10\xb8\xd1\xcf\x04\x40\xfe\xdb\x28\xa5\xe1\x95\x84\xef\x78\x67\xbd\x96\x2b\xa4\xed\xe5\x13\xaf\x03\xdd\xa6\x69\xf7\x6c\x67\xd2\x8f\xb5\x07\xd5\x76\x2c\x61\xd5\x28\xf1\xcf\x3a\x7c\x56\x3e\xee\x1c\x04\x10\x62\x54\xce\x3f\xd8\x21\xc1\x7a\x0d\xef\xc3\x7d\x79\xa5\xde\x7e\xf9\x35\x2c\x7b\x41\x1c\x95\x39\x58\xd2\x54\xd0\xd3\xe5\xae\x61\x8a\x68\xa5\x3e\x45\x80\x9d\x49\x3c\x47\x4a\x20\x8c\xcc\x0f\x17\x0d\xf4\x83\x6d\x05\x93\xb7\xb7\xce\x87\x4f\xa0\x1f\xe0\x41\x5a\x59\x4f\x94\x1c\x31\xf0\x78\x4a\xad\x39\x4f\x06\xb8\x53\x70\x29\x55\x5c\xcc\x73\xea\xab\x0b\x36\x84\x6f\xe5\xcc\x6e\x92\xdb\x0c\x90\xa6\x2d\x1d\x36\xc3\x82\xc3\x51\x92\x17\x89\xdf\xbe\x0f\x60\xb1\x3d\xb0\x81\x4a\xaf\x4f\xa6\xf8\x13\xa7\xcf\x2a\xd1\x2e\xbe\x10\x50\xee\xf9\x27\x68\xc3\x13\x71\x8d\x8d\xb2\x02\xe3\xd1\x09\x3d\xcf\x59\x33\x45\x1e\xfd\x9b\x72\xee\x4e\xf7\x5d\xfc\x0e\xa0\xaf\xff\xb8\x1b\xbe\xe5\x50\x38\x2b\x6b\x12\x12\xce\xa0\x97\xb7\x09\xae\xc7\xc0\xa8\x57\x99\x12\x7d\x01\x37\x6f\x7b\xd6\xf2\x55\x73\x29\x72\xf8\x89\xb6\x84\x3f\x61\x54\x78\xee\x23\x12\x47\x37\xf8\x13\xb1\x8f\x31\x33\xaf\x12\xb4\xe4\x1e\x70\xbe\xa0\x58\xb0\x0a\x5f\x96\x5e\xd2\x37\x7b\x48\x91\x6b\xc2\xa7\x16\x2a\xdb\xf7\xbc\x9c\xa1\x1a\xea\xaf\x88\xc2\xf5\x22\x9a\xf6\xdd\x38\x61\x57\x4a\x0d\x5d\x5a\xe4\x82\xf2\xd7\xe8\x6d\x17\x20\x05\xcc\xa5\x65\xb1\x2b\x19\x9a\x7d\x81\x08\x7d\x85\x77\x6d\x61\x39\x40\xb4\x87\x35\x26\x6d\x45\xa4\xad\x11\xe1\x68\xe8\x9b\x89\x3e\x65\x0b\x98\x4b\x48\x3a\xbb\x31\x8f\x43\x2f\x13\xc6\x1f\x26\xf3\xde\xab\xc6\xb4\x5d\xcf\x5f\xf4\x57\x9d\xa8\x9a\x9d\x23\x25\x1d\x1a\x6b\xec\x12\x2c\xb2\x10\xfc\x3a\xfa\x89\x10\x23\x95\xe1\xd2\x6b\x14\xca\x41\x80\xc1\xb6\xfe\x0b\x30\x00\x04\x95\x50\x28\x3b\x61\x8a\xb1\xfd\x6b\x16\x58\x55\xb2\x97\xd9\x45\x7a\xc5\x49\x46\xfb\x99\xe6\xf0\xd8\x87\x2d\xb8\x79\x34\x34\x7b\x6d\x9a\x38\xa7\x31\xbf\x8b\xd0\x8f\x2a\x7a\x7d\x80\xd4\xcf\x24\xfa\x9a\x16\xc2\x09\xa1\x84\x94\x13\x3d\x6d\xd0\xd2\x92\xef\xeb\xa7\x87\x2c\x4d\x7b\xdf\xaf\xd4\x16\xe6\x34\xcf\x90\xab\x4d\xc9\xbc\xcc\x64\x32\x27\xa0\x55\x52\xee\xe0\xf9\x16\xec\x20\x2d\xcb\x01\x1c\x83\x94\xb1\x09\x96\x87\x3a\x0a\x4b\x7a\xee\x15\x14\xf5\x95\xd2\x32\x89\xa3\xbf\x62\x08\x5b\x0a\xee\xa0\x00\x92\x06\xe7\xa7\x06\x1a\xd8\x66\x35\x22\x41\x70\x8a\xcb\xcf\x3c\x2f\xc0\xfd\xca\xaa\xa8\xb3\xbe\x8e\x51\x0b\x99\xe0\x4b\x96\xdd\xaf\xa9\xf8\x48\x3b\x7a\x56\x8c\x5e\xba\xdd\xad\x56\x77\xd9\x14\x4a\x27\x0d\x04\x44\xae\xa3\xc0\x77\x5d\x24\x1d\x79\xba\xea\x30\xdc\x4b\xb1\x9a\x71\x24\x71\xf1\x12\x83\x8c\x75\x25\x49\x6d\x4a\x8f\xa6\x66\x58\x61\x03\x47\xd4\x90\xaf\x85\x30\x5c\xea\xbf\x0f\x35\xac\x27\x7f\x2e\xf1\xb6\xa8\xe5\x81\x3c\xe0\xbe\xa5\x87\xe6\x27\xd7\x25\xf1\xdb\x12\x41\x22\x2a\xcd\x41\xe1\x6c\x8a\x32\xbd\xb4\x07\x78\xd4\xa1\x0f\x87\xb1\xe9\x0e\x00\x6d\xfc\x03\xd2\x93\x45\x89\xd2\x59\x65\x24\x0e\xe9\xc2\x14\x19\xa2\xaa\x5b\xd8\xf3\xfc\xd3\x20\x8f\x9b\x52\x15\x55\x13\xa6\xda\x73\x46\x8d\xc0\x70\x31\x02\xbc\xca\x0e\xba\x18\xe8\x8c\x19\xda\x64\xab\x5c\x6b\xf6\xcb\x81\x09\x73\x01\x53\x69\x33\x32\xf7\xe1\x60\x86\x27\x19\xdc\x08\x17\x5e\xd0\x74\xf5\xbf\x28\x87\x70\x55\x01\x33\x1c\xf7\x52\x54\xfc\xe0\xe1\x45\xac\x22\x41\x87\x52\x93\x03\x6f\x2a\xa9\x65\x92\x19\x40\x73\xd0\x47\x54\xc2\x6f\x19\xe7\x76\x33\x32\xb4\x3d\x02\x87\xa2\x83\x47\xd5\x15\x5b\xac\xfd\x32\x62\x8f\x50\x0d\x9e\x9c\x04\xf5\x36\x9f\x63\x17\xe6\x06\xe4\x22\xf9\x8c\x48\xb1\x1f\x75\x5b\x2b\x0f\xdc\x79\x49\x4a\x76\x97\x00\xd3\x5a\x88\xa3\x30\xf0\x2c\xab\x2f\xb7\xb6\x50\x49\xe2\xd1\xe3\x50\xa6\xe0\x2d\x5d\x54\xac\x7c\x85\xf2\x68\xc0\xea\xf7\x70\x71\xd5\xac\xab\xed\x99\x42\x90\x30\xd0\x0b\x30\xc4\xca\xa2\x1c\xe3\x22\xd4\xf7\x80\xe8\x92\x20\x11\x29\xff\x77\x2d\x22\xcc\x4d\x4c\x27\x4b\x47\x99\x48\xd2\x2a\xcf\xc1\x76\x0b\x29\x17\xff\x30\x8e\x9a\x3a\xa2\x27\x79\xbd\x0f\x45\x3d\x11\xe0\xde\xe7\x88\xdc\xf9\x5b\x7b\xe9\x0c\x3b\x3b\x3a\x7f\xe5\x35\xda\x50\x3c\x38\x1e\x34\x6e\xb2\xa0\xb0\xe3\x75\xad\x72\x6e\xe2\xa3\x89\x19\x81\x0d\x5c\x54\x5e\xdc\xea\x1b\x23\x10\x9a\x3f\xb6\x8e\x30\xc0\x1c\xc7\x04\xa9\xd2\x3a\xe5\x5d\x18\xcc\x9f\xdf\xf0\x2b\xd4\x84\xd5\x9f\x46\x8d\x75\xa7\x96\x65\x7f\xdc\xa5\x9f\x55\xd4\xbe\x7e\xfd\x73\x78\xa3\x16\x85\x33\x4a\xdc\x0c\xac\xae\xf9\xaf\x56\x49\xda\x85\xdc\x6c\x59\x89\xcf\x8e\x2b\x99\x77\xa6\x2a\x8c\xa8\xbc\x27\x78\x2b\x1b\x30\x28\xa4\xde\x9a\x0e\x87\xdb\xab\x78\x79\x14\x4e\x40\xa8\x11\xf0\xb1\xb2\x88\x0d\x26\x82\x3c\x99\x0a\xde\xb7\xdf\x41\x11\x6f\xcf\x60\x22\xa0\x8d\x87\xac\x7c\x63\xec\xdf\xf7\x96\xda\xfa\x08\x2e\x5c\xd8\x5d\x6c\x3f\x17\xf8\x74\x0e\xa1\xe9\xa0\xc8\x86\xe0\xcd\x70\x74\xc4\x5d\xbc\x2d\xc7\xb3\x4c\x68\x59\xe0\x6a\x0c\xee\x9b\x20\xce\x43\x72\x4a\x41\x4e\xb7\x7b\x0b\x80\x4d\xff\xcc\x7b\xc4\x4d\xab\x7f\xa0\x2a\x38\x36\xea\xe3\x96\xf9\xed\xe4\x8d\x6d\xee\xa3\x33\xb0\xa9\x90\xeb\xbc\xd1\xb3\x36\xbb\x73\xd8\xe7\x2c\x72\xe1\x24\x49\xf1\xca\x72\x0a\x3b\xcd\x97\x88\xd1\xdc\xdd\xe5\x12\x14\xb7\x71\xa1\xca\x13\x89\xeb\xb5\xa0\x56\x45\xac\xf9\x73\x15\x65\x1a\xe8\x86\xec\xd5\xf0\x09\xa7\xcc\x62\xbf\xc4\x94\x59\xb7\x1f\xea\x3f\x8a\xdc\x05\xd3\x71\x29\x78\x1a\xc9\x07\x3e\xb8\x3f\x1e\xeb\x1f\xc8\x4a\x90\xc8\x31\x6c\x36\x16\x42\x59\xa7\xc2\x4e\x5a\x20\x0c\x35\x3e\xbd\x7b\xf2\x32\x4e\xff\x52\x16\x80\xb2\x18\xa8\x65\x4b\x6d\xf7\xb0\x46\xaf\xdc\x85\xa7\x8c\xfe\xe1\x74\xa6\xe9\x19\x78\xd4\xaf\x65\x11\xd3\x07\x99\x19\x5d\xf4\x28\x86\xc8\x32\x7d\xcc\x62\x4c\x29\x12\xf8\x3f\xe1\xbb\x63\x02\xec\x71\xa8\xf0\x98\xd5\xe0\x56\xd8\x95\x95\xc4\x60\x06\x2d\x29\xa5\x54\x6e\x5b\xa7\x7e\x0a\x17\x9a\x84\x8f\x03\x3e\x11\xaf\xc1\xa1\x98\x97\xe8\x3c\x2a\xb7\xeb\x58\x20\x72\x22\x15\x67\x67\xeb\xdb\x2e\x24\x26\xae\x2c\x59\x4c\x20\x5d\xa5\x96\x50\x28\x3b\x33\xcb\xf5\x0a\x77\xd6\x07\xde\x9e\x2f\xfe\x0f\x08\x0f\xd7\x73\xc7\xe0\x3f\x20\x50\x5d\xd0\xcb\x15\xcd\x89\x24\xcd\xd6\xb8\x7d\x7f\x61\x5b\xcc\xd2\xeb\x47\x83\x95\x61\xd7\x9a\x02\xca\x9c\xde\x0f\xde\x19\xb5\xa0\xc2\xa9\x0b\xd4\xa0\xc7\x36\x1b\xfd\xad\x53\x74\xac\x42\xb5\x16\x11\x15\x75\x9c\xfa\x2a\xc0\x8c\x16\x79\x5a\xb5\x2c\x84\xc5\x40\x71\x0b\x1d\x1d\x50\x06\xf2\xab\xa0\x98\xc6\xb6\x82\xa5\x1f\x03\xff\x5d\x79\xb6\xbc\xe0\x20\xce\x72\x6f\x7f\xa2\xe7\x68\x51\x38\x08\x7d\x60\x9c\x05\x05\x4a\x9f\x4c\x45\x68\x15\x2e\x89\x00\xd8\x66\xbd\x4a\x98\x0b\x07\xd3\x5b\x83\x36\x47\xd1\xf4\xe2\x65\x75\xd4\xde\x1c\x7a\x7c\xcf\x5c\xd1\x19\xd6\xdb\x4c\x72\xfb\x9c\x24\xe3\xa0\x85\xec\xdd\xe5\x21\xff\x18\xbe\xc6\xc1\x6c\x93\x14\x57\xcd\x8e\x26\x46\x1d\x48\xb5\x5c\x21\x1a\x27\xba\x49\x86\x63\xb3\x4e\xa0\xdc\xfd\x8c\xdf\xa1\x29\x00\xfe\x83\x67\xab\xbe\xac\x8e\x4e\xb1\xa1\x80\x36\xc9\xc1\x69\x49\x35\xa5\x73\xb6\x1a\xfc\x05\xc1\x26\x5a\xaf\xb6\xef\x58\x4e\x82\x3b\x84\x27\x64\xb7\x1d\xca\x33\x18\x37\x64\x9a\x51\xd0\xc9\x6c\xef\xec\x43\x58\x35\xb8\xf4\xb5\xda\xc5\xd1\xf2\x4b\xe9\x4d\x53\x78\xa1\x66\x4e\xfc\x1d\xaf\x55\x70\x15\x65\x7a\xdb\x77\x88\x1c\x5d\x18\x1c\xd9\xd1\xf1\xd3\xd9\x6b\xf7\x4d\x51\x67\x93\x02\x85\xb6\xf9\x8f\xef\x31\xbb\xef\x73\x78\xcf\x2f\x12\xc4\xc4\x79\xf9\x60\x76\xd8\x17\x0d\x76\x8d\xfd\x2f\xe8\x23\xcd\x14\xd6\xd7\x05\x9d\x75\xd9\x54\x7a\xb2\x2a\xda\x6f\xd1\xa3\x64\xae\x76\x29\xe6\xf7\xe4\x66\xa4\xc8\xa4\x94\x83\xe4\x55\x5f\x6c\x08\x81\xfd\x2c\xee\x97\x92\x32\x47\xf2\xca\x83\x9f\x88\xb1\xed\xa7\xc3\xb7\xc7\x5f\x53\x0c\x0f\xd6\x0b\x85\xe8\xb1\x0d\x4b\x58\xd7\xb8\x81\x5b\xbf\x1e\x4f\x42\xa1\x6b\x25\x22\x58\x88\xbd\xa2\x47\xd4\x6b\xe3\x55\x13\x25\xb6\x06\xf6\x1c\xe7\x76\xa9\x2f\x04\x68\x84\xfd\x27\x5e\x82\xd4\xc0\x87\x61\xb6\x0d\x69\x8c\x5a\xdd\xe7\x8d\xed\x62\xd8\x83\x5a\x1b\x23\xb3\xff\x96\x57\x6b\x2c\x19\x8f\x72\x2e\x76\xea\x22\x66\x73\x88\xa4\x4e\xd3\x16\xea\x6d\xc5\xbe\x4b\xd8\x40\x43\x57\x2a\x2a\xfa\x19\xcd\x9a\x84\xef\x5f\xfc\x28\xfb\x0f\x68\x9c\x4c\x25\x26\xce\xc2\x61\x50\x2f\x1e\x0a\xf6\x65\xcb\xde\xf5\x0e\x3a\x66\x9c\x0a\xa1\x36\x43\x07\xc8\x9d\x76\x6d\x58\x69\xe2\xc9\xe4\x14\xca\x21\x67\x35\xc0\x18\x26\xee\xe4\xea\x8b\xcb\x09\xb6\x7a\x8d\xd8\xf7\xed\xb6\x85\x36\xc6\xee\xfa\x0f\xa0\xd7\x8f\x4a\x86\xbd\x70\x48\x2d\x98\x52\xe4\x82\x91\xd1\xe1\x6a\xd1\x14\x34\x77\x9a\x27\x86\x1a\xf8\x19\x2a\x64\x27\x50\x84\xe7\xd9\xe0\x60\x4c\x52\x07\x3c\x33\x24\xb9\x57\x7b\x08\x80\x73\xab\x27\x00\x41\xd0\x41\xcf\x5f\xf1\x88\x31\xb8\x0e\x00\xa2\x73\xb6\x86\x00\x59\xbe\xc4\xa6\xc4\x19\x02\x64\x4e\xf9\x23\xe8\x90\xd5\x58\xb5\xa9\x6e\xf9\xee\xfe\x19\xde\x12\x07\x35\xe9\x89\x87\xa9\x8d\x53\xa5\x6e\x32\x26\xc5\x76\xcd\x2e\xf4\x86\xae\x13\x8f\xf3\xb6\x2e\xae\x33\xca\x91\xf8\xb7\x7d\x3a\x98\xf5\x83\xe8\x63\xd4\xeb\xe5\x3d\x0b\x3f\xa9\x7c\x47\x68\x28\x05\x93\xf9\x35\xf6\x14\x25\x95\xed\x15\x05\x7a\xdf\x8b\x60\x14\x86\x20\x49\x3a\xfe\xb5\xff\x5d\xe1\x7b\x6a\xc2\x6d\x5b\xbb\x7c\xf7\xf4\x71\x32\x64\x2e\xbe\x73\xde\x00\x51\xf0\x73\x61\x0b\x0c\x1e\xae\xf6\x74\x99\x19\xcf\x0e\x87\x14\x4c\x0d\x8f\x70\xee\xab\xb7\xfe\x6c\x2e\x58\xf9\x14\xe5\x44\xe8\xbe\x21\xc2\xf3\xa6\x02\xd6\x1c\xfc\xf0\x17\x65\xe4\x9c\xbc\xd0\xa6\xf9\xb1\x61\x6e\xc5\x6a\x4d\xe6\xe5\x2b\xc9\x79\x84\x0a\x84\x2d\x9b\x2d\xd4\xb5\xd5\x9d\x15\xb3\xce\x85\x13\x8b\xc9\x8c\x1e\x25\x4c\x84\x85\x3b\x67\x26\xb6\xfd\xb7\xbc\x79\xe9\x0d\x34\xbe\x3d\xd8\x6c\x4d\xef\xbf\xac\x94\x38\x80\x29\x2f\xec\x0d\x99\x5c\xdb\x52\x44\x51\x4d\x11\x51\x8e\xfe\x79\x20\x4d\x53\xc9\xcd\xa4\xa4\x87\xbf\x30\xe9\xff\x7f\x28\x6e\x53\x6a\xc1\xfe\x9f\xa1\xa7\x1f\x3e\xed\x0e\x47\xf8\x47\x1e\x88\xdb\x19\xfc\xd3\xe3\x19\x76\x98\x96\x97\x98\xf2\x6d\x5c\x9c\x4b\x8a\x7b\x93\x5a\x0f\xaf\x39\x5d\x2b\xa9\xee\x8c\x57\xe1\x37\x47\xad\x4d\x01\xa2\xee\xca\x7e\x85\x3f\x9c\x52\x73\xfc\x16\x18\x54\xc2\xe9\x66\xf8\x53\xa4\x88\x88\x44\x44\x22\x91\xed\x0b\x3c\x59\x31\x5f\x8c\xba\xe2\xc9\xa4\xaf\x08\x4d\x10\xcb\x4c\x7e\x64\x00\x01\xb7\xf3\x40\x13\x2d\x80\x47\x4c\x6d\xaa\x0e\x00\x9c\x38\x0d\xf0\xfe\xb5\x7d\x5e\xb1\xed\x8b\x40\xcd\xf2\x44\x6c\x8a\x42\x4d\x48\xeb\xe5\x89\x7d\x92\x2e\x42\xf2\x5b\x98\x83\x63\x95\xdb\x51\x3e\x49\x04\xfc\x25\x21\xac\xca\x53\x03\xac\x57\x64\x54\xe6\x02\xd4\xb3\x55\x20\x73\x68\x18\xa8\x46\x83\x79\x00\x0f\x8f\x30\xf9\xe3\x7d\x05\xc7\xbc\x1f\x16\xec\xc9\xac\xb0\xf8\xc6\x30\x96\x67\x75\x57\x5a\x40\x64\xa7\x70\xf7\xb5\x3f\x7c\xa7\xcc\xc0\x0b\xdb\x71\x19\x5d\x53\xcf\x21\xb7\x48\x20\x66\x52\x20\xc0\x57\x85\xb2\x25\xb2\xcb\xe2\x85\x5a\x5a\xe4\x0b\x9b\xce\x9e\x1e\xdd\xb7\x8a\x9e\x4c\x08\x25\xfb\x47\xff\xf9\xe6\xf3\x7a\x95\x54\xd9\xee\x04\x6c\xd1\x8a\x30\x1d\xae\xe2\x6e\xc5\xee\xf4\xf1\x01\x25\x6e\x0c\x59\xdf\x35\xcb\xb5\x19\x2f\x80\x16\x2b\xa3\x93\x7d\xbf\x36\x19\x98\x7b\xf1\x8b\x1d\x69\xd6\xe6\xe0\xc4\x2f\xea\xd7\xf0\xed\x6d\x2c\xf5\x4d\xa7\x8f\x87\x49\x60\xe4\x45\xa1\x08\xb7\xbb\x09\x87\xcb\x94\x27\xe1\x02\x3a\x1c\x85\xc2\x72\xc1\x0b\xca\x78\x1f\x98\xc7\x6e\x10\x67\x39\x24\xe6\x58\xe7\x36\xcc\x54\x4a\xfc\x0c\xde\xcd\xe8\xe5\x8d\x14\xa1\x8e\x4b\x74\x21\x50\x75\x1a\x46\xa1\x4d\x90\xd7\x10\xa9\xea\x82\x26\x6e\x46\x65\x4b\xbc\x15\x36\x85\xc1\x95\x99\x8b\x09\x23\xcc\xe3\x13\x50\xb7\x9b\x20\x39\xf2\x38\x55\xdc\x3b\xa1\x14\x38\xb1\x5c\xc0\x3a\xaa\xd9\xd3\x1b\x58\x19\xc4\xb4\x12\x34\xe9\x3a\x30\x61\x55\x47\x9a\x6b\xd4\x5d\xf8\x4e\x1c\xf9\xe8\xd8\xea\x0e\x89\x6d\x92\x88\xd2\xe4\x8d\x87\x30\xd8\x6b\xf8\x99\x7c\x62\xa8\x37\x8a\xd9\x59\x25\x67\x2d\xef\xba\xa1\xc9\xcb\xa3\x15\xce\x1e\x64\xf8\x61\x6b\x17\x4b\x88\xc5\x7a\xb7\x80\x74\x8a\xe9\x6c\xdb\xe3\x6d\xc4\xd7\x90\x54\xfd\xd7\xbe\xc3\xb4\x0b\x1f\xc7\xb1\x26\x6e\x19\x7c\xa7\xfe\x41\xd0\x74\x3a\xd9\xa8\xa1\x04\x30\xa4\xe1\xcc\xed\xf8\xaa\x48\x62\x3f\xff\xa2\xbf\xd3\x30\x36\x4b\x0e\x3a\xa1\xdb\x7d\x9b\x9a\xa4\xca\x8e\x17\xd9\x3c\x91\x6d\x6a\xfe\x57\xd3\x3f\x7b\x05\x9b\x67\x0b\xba\x34\xbc\xee\xd5\x11\x65\xff\xc0\xdc\xa6\xaf\x53\x2e\xb3\xef\x97\x6b\x29\x6e\x97\x5c\xe2\x5b\x40\xec\x63\x9c\xa4\x35\x93\xb2\x59\x46\xba\x82\xa8\x19\xe8\xf1\xaf\xa7\xdf\xa3\x45\xf3\x5c\xc0\x8b\xf3\xe7\x73\x02\x88\x6c\xaf\x08\xe1\x43\x24\x45\xf6\x7d\xc5\x9c\x69\x85\xe7\xf8\xc9\xbb\xc8\xa6\x8a\x39\x25\xe2\x0c\x14\xbd\xd2\xb6\x92\x2b\xc9\x24\x32\x1f\x58\x23\xdf\x51\x18\x34\xf2\xa2\x9e\x4d\x7e\x32\x0f\x96\x3c\x7a\xd3\xa1\x52\x22\xaf\xa2\x2a\x98\x37\x51\x47\xfb\x3f\x43\x33\xf5\xb8\xc1\x39\xa1\x04\x5d\x3c\xc6\xde\x57\xb2\x4a\x23\x41\xcc\x16\xb3\xdf\xe0\x69\xa3\x58\x65\xb8\x52\xc2\xf8\x4f\xd4\xec\x28\xec\x17\x8f\xd0\xb9\xff\x32\xe1\xe5\x29\xbf\x3d\xc9\x69\xae\x17\xdb\x13\x96\xc2\xcb\xa7\x4b\x6a\xd4\xb8\x32\x07\xea\xb4\xb1\x2c\x93\x60\x4d\xa7\xeb\xbd\x03\x9b\xae\x1e\xa1\xcb\xf5\xc9\x79\x87\x0e\x8e\x87\xae\xc0\xc8\x83\xe8\xb9\x52\xbe\xc1\x98\x67\x60\x40\x3b\x19\x3e\x16\x5f\xff\x20\xff\x51\x60\xa4\x34\xbd\x25\xa7\xcb\xec\xc4\xf8\xb9\xb7\xa5\x5b\x41\x29\x6f\x96\x09\x34\x2b\x8a\x76\xaf\xb6\xab\x98\x91\xbd\x17\x42\x70\x8a\x99\xf3\x4a\x56\xef\xc1\x39\x20\x0f\x1b\x5f\xe1\x57\xbb\x27\x62\x40\xe7\xe2\xa0\xa0\xf4\xea\x59\x1a\xc0\xb2\x4a\x21\xcc\xd1\xcc\x4e\xf6\xc8\xba\xa0\x82\xde\xa2\x3f\xe5\x49\x90\x1e\xcb\xe7\x8c\x47\x4b\x27\x54\x33\x49\x05\x9f\x91\x15\xa5\x91\x39\xe4\x5e\xe6\xf9\xff\x40\x52\x38\x54\x22\xc9\x38\x61\x59\x4f\xe9\x89\xfa\x84\xd2\x82\x1d\x63\xea\x55\xd9\x32\x7d\x70\x19\xe9\x12\xf7\xeb\xae\xbf\x24\xbf\x21\x16\xcc\xc1\xa6\xa2\x83\xc3\x97\xba\x3c\xaa\x5e\xa8\xd4\x4a\xc7\x36\x78\x3f\xb4\xef\x27\x15\x95\x70\xae\xf5\x11\x56\xe9\x0e\x69\x4f\xaa\x6d\x1a\x9e\x19\x21\xd8\xd1\xb1\x87\xc3\xea\x36\x7f\x33\x08\xcf\xe1\xb7\x41\x2a\x55\x8b\xf3\xce\x7f\xfe\xf3\x0f\x89\x27\xe4\x96\x12\x6e\x3e\xfe\x17\x1f\x4b\xee\xf7\x1b\xae\x80\xd3\x63\xf5\xb7\x3a\xa8\xf7\xa9\x12\x82\x42\x6c\xa3\xc7\xf0\x88\xe4\x25\x56\xc5\x65\x45\xbd\x0d\xe1\x96\x96\xd7\xb6\x07\x37\x65\x80\x08\xfd\x63\xc2\x3f\xef\xdc\xf5\x5a\x33\x58\x46\xb1\xa1\xda\xba\x80\x40\x4b\x4f\xc4\x87\xd1\x9f\x32\xe3\xad\x86\x81\x39\x0f\x2c\x57\xa2\x09\x74\x24\x4f\xd1\x12\xdd\x0c\x88\x30\xe4\x11\x60\xd5\xd7\x40\x59\x95\x13\xae\x0c\x03\xa9\x08\xa0\x08\xeb\x41\x19\x68\xd5\x3f\x5b\x9c\x1d\x8d\xd4\xf3\xf0\x36\x55\x92\xe6\x26\xf4\xf2\x01\x68\x52\x1a\x58\x73\x97\x67\xb1\x8c\xf2\x40\x0c\xa6\xf6\x97\xcc\xea\x44\x63\xaa\x90\x38\x90\x92\xf3\x5e\xca\x8a\x4b\x1b\x7c\x5d\xa0\x42\x83\xa6\x7b\x0f\xb1\x3f\x36\x04\x73\x76\xbf\x35\x91\xae\xbd\x37\xab\xf5\x08\xb3\x66\xf5\xb6\xf5\x44\x2f\x41\xc0\x57\x2f\xc8\xea\x15\xb5\xd9\x2c\xc3\x47\x9d\x01\x8e\x57\xd7\x2d\xbc\x1b\x03\x71\x0d\xae\x0a\x3e\x27\xf9\x2a\x6d\x96\xf0\x19\x2b\x7d\x63\xaf\x28\x27\xe6\x93\x92\x6c\x08\xf1\x30\x39\xe8\xf8\xc9\xec\x97\xd5\xff\xb3\x4e\x5e\xc2\x5f\x17\x55\x96\x4d\xf0\x48\xd2\x2f\x48\xee\xd1\x75\x6b\xf1\x66\x0c\x61\x9f\xb1\xa0\x36\x90\x1f\xd9\xad\x59\x04\xee\x35\x4e\x90\x17\x4b\x12\xee\x8d\x44\x99\xe1\x8f\x69\x9f\x6f\x8b\xdc\xfa\x19\x59\xb5\xad\xdb\xa3\xf4\x0e\xeb\xc7\x27\x59\x4c\x7d\x26\x7f\x5f\x12\x3e\xd2\x5d\xb5\x0e\xb9\x82\x88\xc2\xd5\x14\x16\xa1\x20\x59\x7f\x4e\xc0\xeb\xaa\x08\xa9\xf1\xaf\xa7\xa9\x2d\x63\xde\x95\x41\xd1\xd1\x13\xc8\xd6\x45\xbf\x02\x79\xdb\x6e\x7e\x1d\x0a\xe7\x1b\x78\x5e\x47\xe1\x40\x63\xec\xfb\x14\x86\x04\xd4\xb9\xe2\xba\x9a\xc9\x07\x44\xb6\xbf\xaa\xb6\x37\xe3\xe1\x5d\x4e\xea\x24\xcb\x4e\x9c\x76\xd8\xef\xa7\x50\xa7\xbe\x5c\x52\x41\xa4\x6c\x59\x6f\xd3\x96\x88\xb0\xdd\x52\xe5\x40\x64\x1c\x3f\x98\xd7\x09\x5c\x63\x47\xdd\xeb\xd3\x1c\xce\x61\x93\x80\x46\x07\xd3\x4f\xf8\x2f\x3e\x0d\xcc\xc9\x81\xa6\x8e\x0d\x69\x0a\x8b\x80\x6f\xf7\x57\xbb\x11", 4096); syscall(SYS_ioctl, (intptr_t)r[2], 0xc0f24413, 0x100005c0); break; case 10: *(uint8_t*)0x10000000 = 0; *(uint8_t*)0x10000001 = 0; *(uint8_t*)0x10000002 = 0; *(uint8_t*)0x10000003 = 0; *(uint8_t*)0x10000004 = 0; *(uint8_t*)0x10000005 = 0; *(uint8_t*)0x10000006 = -1; *(uint8_t*)0x10000007 = -1; *(uint8_t*)0x10000008 = -1; *(uint8_t*)0x10000009 = -1; *(uint8_t*)0x1000000a = -1; *(uint8_t*)0x1000000b = -1; *(uint16_t*)0x1000000c = htobe16(0x8100); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 1, 0, 3); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 1, 3, 1); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 4, 4, 12); *(uint16_t*)0x10000010 = htobe16(0x806); *(uint16_t*)0x10000012 = htobe16(1); *(uint16_t*)0x10000014 = htobe16(0x800); *(uint8_t*)0x10000016 = 6; *(uint8_t*)0x10000017 = 4; *(uint16_t*)0x10000018 = htobe16(9); *(uint8_t*)0x1000001a = 0xaa; *(uint8_t*)0x1000001b = 0xaa; *(uint8_t*)0x1000001c = 0xaa; *(uint8_t*)0x1000001d = 0xaa; *(uint8_t*)0x1000001e = 0xaa; *(uint8_t*)0x1000001f = 0xbb; *(uint32_t*)0x10000020 = htobe32(0xe0000001); *(uint8_t*)0x10000024 = 0xaa; *(uint8_t*)0x10000025 = 0xaa; *(uint8_t*)0x10000026 = 0xaa; *(uint8_t*)0x10000027 = 0xaa; *(uint8_t*)0x10000028 = 0xaa; *(uint8_t*)0x10000029 = 0xbb; *(uint32_t*)0x1000002a = htobe32(-1); break; case 11: memcpy((void*)0x10000040, "\x0f\x5a\x60\xb0\x06\xc4\xe1\x01\x6b\xd7\x65\x2f\xc4\xe1\xf8\x11\x81\x00\x00\x00\x80\xc4\xc1\x19\x60\x18\x3e\x67\x3e\x0f\x01\xd9\xf2\xe1\xab\xf3\xee\x66\x0f\x14\x8b\xf1\xff\xff\xff", 45); syz_execute_func(0x10000040); break; case 12: break; } } int main(void) { syscall(SYS_mmap, 0x10000000, 0x1000000, 7, 0x1012, -1, 0); use_temporary_dir(); do_sandbox_none(); return 0; } :350:11: error: use of undeclared identifier 'SYS_freebsd12_closefrom' syscall(SYS_freebsd12_closefrom, (intptr_t)r[1]); ^ 1 error generated. compiler invocation: clang [-o /tmp/syz-executor427338128 -DGOOS_freebsd=1 -DGOARCH_386=1 -DHOSTGOOS_freebsd=1 -x c - -m32 -O2 -pthread -Wall -Werror -Wparentheses -Wunused-const-variable -Wframe-larger-than=16384 -static -lc++ -Wno-overflow] --- FAIL: TestGenerate/freebsd/386/7 (1.09s) csource_test.go:108: opts: {Threaded:true Collide:false Repeat:true RepeatTimes:0 Procs:0 Slowdown:10 Sandbox:none Fault:false FaultCall:0 FaultNth:0 Leak:false NetInjection:false NetDevices:false NetReset:false Cgroups:false BinfmtMisc:false CloseFDs:false KCSAN:false DevlinkPCI:false USB:false VhciInjection:false Wifi:false IEEE802154:false Sysctl:false UseTmpDir:true HandleSegv:false Repro:false Trace:false} program: getsockopt$inet6_sctp_SCTP_EVENT(0xffffffffffffff9c, 0x84, 0x1e, &(0x7f0000000000)={0x0, 0x4, 0x1}, &(0x7f0000000040)=0x8) getsockopt$inet6_sctp_SCTP_MAX_BURST(0xffffffffffffffff, 0x84, 0x19, &(0x7f0000000080)={0x0, 0x7fff}, &(0x7f00000000c0)=0x8) r0 = dup(0xffffffffffffffff) setsockopt$inet6_sctp_SCTP_ADAPTATION_LAYER(r0, 0x84, 0x8, &(0x7f0000000100)={0x7}, 0x4) readv(r0, &(0x7f0000000540)=[{&(0x7f0000000140)=""/149, 0x95}, {&(0x7f0000000200)=""/179, 0xb3}, {&(0x7f00000002c0)=""/172, 0xac}, {&(0x7f0000000380)=""/182, 0xb6}, {&(0x7f0000000440)=""/206, 0xce}], 0x5) thr_wake(0xffffffffffffffff) r1 = socket$inet_udplite(0x2, 0x2, 0x88) freebsd12_closefrom(r1) r2 = open(&(0x7f0000000580)='./file0\x00', 0x4, 0x40) ioctl$DIOCGETSTATE(r2, 0xc0f24413, &(0x7f00000005c0)="2a368a90b488d04ee1eccd139778043b00a6f81a3627b593b0dfce33265cda8fba8b0fa538b3e364ad1d1f7de1011c63f592a64dd0ec953f9c050f991f42d24d7bc47c4d5bf323e393605e59a1eb5bc4e948f83890911ed35b53a2b0d63db79dc21d6190f8b434d6ff85e54fb9a28a7566d1a24337e72e82acc9e518339acac7dd8960a1c9c5cb3da9e6bc0b697e9dbbc60fa8b72c3719286bf44c2e8fc8356e9125eae9bed216f349c292c989d7dcd252dfb79c4fdbdc865109f1e3cf9cd67cfa8babb7d3627ce0080910c5755c92cbb2c159172a65ea8a2085f4ce10e1436ef2f7d6f1db702a387cd35681293331bd1bdbd690274a7c372f84e4d5748791d707ee5c127eda8b84596b0c10890c881006beb38ad56d139d8c74f14f3598de551ee3a13466e67cb3d2c5fd909061522058ffbe9ae431325544c894b9841a4c253632a332c6e0d881645f90b6337db99b7fad1bd162f73d11ce5e57d5f321fb68a795c990662a35706af845b5383fe50ba8637613dd43aa7cf20020355218e060af2658866349197f30c835351bd69683baaab8be6b4da04fb35a423314fab610b8d1cf0440fedb28a5e19584ef7867bd962ba4ede513af03dda669f76c67d28fb507d5762c61d528f1cf3a7c563eee1c04106254ce3fd821c17a0defc37d79a5de7ef9352c7b411c953958d254d0d3e5ae618a68a53e45809d493c474a208ccc0f170df4836d0593b7b7ce874fa01fe0415a594f941c31f0784aad394f06b8537029555ccc73eaab0b36846fe5cc6e92db0c90a62d1d36c382c351921789dfbe0f60b13db0814aaf4fa6f813a7cf2ad12ebe1050eef92768c313718d8db202e3d1093dcf5933451efd9b72ee4ef75dfc0ea0afffb81bbee550382b6b1212cea097b709aec7c0a85799127d01376f7bd6f255732972f889b6843f615478ee23124737f813b18f3133af12b4e41e70bea058b00a5f965ed2377b48916bc2a7162adbf7bc9ca11aeaaf88c2f5229af6dd3861574a0d5d5ae482f2d7e86d172005cca565b12b199a7d81087d85776d613940b48735266d45a4ad11e168e89b893e650b984b483abb318f432f13c61f26f3deabc6b45dcf5ff4579da89a9d23251d1a6bec122cb210fc3afa89102395e1d26b14ca4180c1b6fe0b3000049550283b618ab1fd6b165855b297d9457ac54946fb99e6f0d8872db87934347b6d9a38a731bf8bd08f2a7a7d80d4cf24fa9a16c209a18494133d6dd0d292efeba7872c4d7bdfafd416e634cf90ab4dc9bccc643227a05552eee0f916ec202dcb011c8394b10996873a0a4b7aee1514f595d23289a3bf62085b0aeea0009206e7a7061ad866352241708acbcf3c2fc0fdcaaaa8b3be8e510b99e04b96ddafa9f8483b7a568c5ebaddad5677d9144a270d0444aea3c0775d241d79baea30dc4bb19a712471f112838c7525496d4a8fa66658610347d490af85305ceabf0f35ac277f2ef1b6a8e5813ce0bea587e627d725f1db1241222acd41e16c8a32bdb40778d4a10f87b1e90e006dfc03d2934589d25965240ee9c21419a2aa5bd8f3fcd3208f9b52155513a6da73468dc0703102bcca0eba18e88c19da64ab5c6bf6cb8109730153693332f7e160862719dc08175ed074f5bf2887705501331cf75254fce0e145ac2241875293036f2aa96592194073d04754c26f19e7763332b43d0287a28347d5155bacfd32628f500d9e9c04f5369f6317e606e422f98c48b11f755b2b0fdc79494a769700d35a88a330f02cab2fb7b65049e2d1e350a6e02d5d54ac7c85f268c0eaf77071d5acabed99429030d00b30c4caa21ce322d4f780e892201129ff772d22cc4d4c274b479948d22acfc1760b2917ff308e9a3aa22779bd0f453d11e0dee788dcf95b7be90c3b3b3a7fe535da503c381e346eb2a0b0e375ad726ee2a38919810d5c545edcea1b23109a3fb68e30c01cc704a9d23ae55d18cc9fdff02bd484d59f468d75a796657fdca59f55d4be7efd7378a31685334adc0cacaef9af5649da85dc6c5989cf8e2b9977a62a8ca8bc27782b1b3028a4de9a0e87dbab7879144e40a811f0b1b2880d26823c990adeb7df41116fcf6022a08d87ac7c63ecdff796dafa082e5cd85d6c3f17f8740ea1e9a0c886e0cd7074c45dbc2dc7b34c6859e06a0cee9b20ce43724a414eb77b0b804dffcc7bc44dab7fa02a3836eae396f9ede48d6deea333b0a990ebbcd1b336bb73d8e72c72e12449f1ca720a3bcd9788d1dcdde51214b771a1ca1389ebb5a05645acf97315651ae886ecd5f009a7cc62bfc49459b71fea3f8adc05d37129781ac9073eb83f1eeb1fc84a90c8316c36164259a7c24e5a200c353ebd7bf2324eff521680b218a8654b6df7b046afdc85a78cfee174a6e91978d4af6511d30799195df42886c8327dcc624c2912f83fe1bb6302ec71a8f098d5e056d89595c460062d29a5546e5ba77e0a179a848f033e11afc1a19897e83c2ab7eb58207222156767ebdb2e2426ae2c594c205da59650283b33cbf50a77d607de9e2ffe0f080fd773c7e03f20505dd0cb15cd8924cdd6b87d7f615bccd2eb47839561d79a02ca9cde0fde19b5a0c2a90bd4a0c7361bfdad5374ac42b5161115759cfa2ac08c16795ab52c84c540710b1d1d5006f2aba098c6b682a51f03ff5d79b6bce020ce726f7fa2e7685138087d609c05054a9f4c4568152e8900d866bd4a980b07d35b833647d1f4e26575d4de1c7a7ccf5cd119d6db4c72fb9c24e3a085ecdde521ff18bec6c16c931457cd8e26461d48b55c211a27ba498663b34ea0dcfd8cdfa12900fe8367abbeac8e4eb1a18036c9c1694935a573b61afc05c1265aafb6ef584e823b842764b71dca331837649a51d0c96cefec435835b8f4b5dac5d1f24be94d5378a1664efc1daf557015657adb77881c5d181cd9d1f1d3d96bf74d5167930285b6f98fef31bbef7378cf2f12c4c479f96076d8170d768dfd2fe823cd14d6d7059d75d9547ab22ada6fd1a364ae7629e6f7e466a4c8a49483e4555f6c0881fd2cee97923247f2ca839f88b1eda7c3b7c75f530c0fd60b85e8b10d4b58d7b8815bbf1e4f42a16b25225888bda247d46be3551325b606f61ce776a92f046884fd275e82d4c08761b60d698c5adde78ded62d8835a1b23b3ff96576b2c198f722e76ea22667388a44ed316ea6dc5be4bd84043572a2afa19cd9a84ef5ffc28fb0f689c4c2526cec261502f1e0af665cbdef50e3a669c0aa1364307c89d766d5869e2c9e414ca216735c01826eee4ea8bcb09b67a8dd8f7edb68536c6eefa0fa0d78f4a86bd70482d9852e48291d1e16ad11434779a27861af8192a64275084e7d9e0604c52073c3324b9577b088073ab270041d041cf5ff18831b80e00a273b6860059bec4a6c41902644ef923e890d558b5a96ef9eefe19de120735e98987a98d53a56e3226c576cd2ef486ae138ff3b62eae33ca91f8b77d3a98f583e863d4ebe53d0b3fa97c4768280593f935f6142595ed15057adf8b60148620493afeb5ff5de17b6ac26d5bbb7cf7f47132642ebe73de0051f073610b0c1eaef6749919cf0e87144c0d8f70eeabb7fe6c2e58f914e544e8be21c2f3a602d61cfcf01765e49cbcd0a6f9b1616ec56a4de6e52bc979840a842d9b2dd4b5d59d15b3ce85138bc98c1e254c84853b6726b6fdb7bc79e90d34be3dd86c4defbfac943880292fec0d995cdb5244514d11518efe79204d53c9cda4a487bf30e9ff7f286e536ac1fe9fa1a71f3eed0e47f8471e88db19fcd3e3197698969798f26d5c9c4b8a7b935a0faf395d2ba9ee8c57e13747ad4d01a2eeca7e853f9c5273fc161854c2e966f853a4888844442291ed0b3c59315f8cbae2c9a4af084d10cb4c7e640001b7f340132d80474c6daa0e009c380df0feb57d5eb1ed8b40cdf2446c8a424d48ebe5897d922e42f25b98836395db513e4904fc2521acca5303ac576454e602d4b35520736818a8468379000f8f30f9e37d05c7bc1f16ecc9acb0f8c630966775575a4064a770f7b53f7ca7ccc00bdb71195d53cf21b74820665220c05785b225b2cbe2855a5ae40b9bce9e1eddb78a9e4c0825fb47fff9e6f37a9554d9ee046cd18a301daee26ec5eef4f101256e0c59df35cbb5192f80162ba3937dbf3619987bf18b1d69d6e6e0c42fead7f0ed6d2cf54da78f874960e445a108b7bb0987cb9427e1023a1c85c272c10bca781f98c76e10673924e658e736cc544afc0cdecde8e58d14a18e4b742150751a46a14d90d710a9ea82266e46654bbc153685c195998b0923cce31350b79b2039f23855dc3ba11438b15cc03aaad9d31b5819c4b41234e93a306155479a6bd45df84e1cf9e8d8ea0e896d9288d2e48d8730d86bf8997c62a8378ad95925672defbaa1c9cba315ce1e64f8616b174b88c57ab780748ae96cdbe36dc4d79054fdd7bec3b40b1fc7b1266e197ca7fe41d0743ad9a8a10430a4e1ccedf8aa48623fffa2bfd330364b0e3aa1db7d9b9aa4ca8e17d93c916d6afe57d33f7b059b670bba34bceed51165ffc0dca6af532eb3ef976b296e975ce25b40ec639ca43593b25946ba82a819e8f1afa7dfa345f35cc08bf3e77302886caf08e1432445f67dc59c6985e7f8c9bbc8a68a3925e20c14bdd2b6922bc924321f5823df511834f2a29e4d7e320f963c7ad3a15222afa22a98375147fb3f4333f5b8c139a1045d3cc6de57b24a2341cc16b3dfe069a35865b852c2f84fd4ec28ec178fd0b9ff32e1e529bf3dc969ae17db1396c2cba74b6ad4b83207eab4b12c93604da7ebbd039bae1ea1cbf5c979870e8e87aec0c883e8b952bec1986760403b193e165fff20ff5160a434bd25a7cbecc4f8b9b7a55b41296f9609342b8a76afb6ab9891bd1742708a99f34a56efc139200f1b5fe157bb276240e7e2a0a0f4ea591ac0b24a21ccd1cc4ef6c8baa082dea23fe549901ecbe78c474b27543349059f9115a59139e45ee6f9ff4052385422c93861594fe989fa84d2821d63ea55d9327d7019e912f7ebaebf24bf2116ccc1a6a283c397ba3caa5ea8d44ac736783fb4ef27159570aef51156e90e694faa6d1a9e1921d8d1b187c3ea367f3308cfe1b7412a558bf3ce7ffef30f8927e496126e3efe171f4beef71bae80d363f5b73aa8f7a91282426ca3c7f088e42556c56545bd0de19696d7b60737658008fd63c23fefdcf55a335846b1a1daba80404b4fc487d19f32e3ad8681390f2c57a20974244fd112dd0c8830e41160d5d740599513ae0c03a908a008eb411968d53f5b9c1d8dd4f3f0365592e626f4f20168521a58739767b18cf2400ca6f697ccea4463aa90389092f35eca8a4b1b7c5da04283a67b0fb13f36047376bf3591aebd37abf508b366f5b6f5442f41c0572fc8ea15b5d92cc3479d018e57d72dbc1b03710dae0a3e27f92a6d96f0192b7d63af2827e693926c08f13039e8f8c9ec97d5ffb34e5ec25f1755964df048d22f48eed1756bf1660c619fb1a036901fd9ad5904ee354e90174b12ee8d4499e18f699f6f8bdcfa1959b5addba3f40eebc727594c7d267f5f123ed25db50eb98288c2d51416a120597f4ec0ebaa08a9f1afa7a92d63de9541d1d113c8d645bf0279db6e7e1d0ae71b785e47e14063ecfb148604d4b9e2ba9ac90744b6bfaab637e3e15d4eea24cb4e9c76d8efa750a7be5c5241a46c596fd39688b0dd52e540641c3f98d7095c6347ddebd31cce6193804607d34ff82f3e0dccc981a68e0d690a8b806ff757bb11") syz_emit_ethernet(0x2e, &(0x7f0000000000)={@empty, @broadcast, [{[], {0x8100, 0x1, 0x1, 0x4}}], {@arp={0x806, @ether_ipv4={0x1, 0x800, 0x6, 0x4, 0x9, @remote, @multicast1, @remote, @broadcast}}}}) syz_execute_func(&(0x7f0000000040)="0f5a60b006c4e1016bd7652fc4e1f8118100000080c4c11960183e673e0f01d9f2e1abf3ee660f148bf1ffffff") syz_extract_tcp_res(&(0x7f0000000080), 0x7fffffff, 0x7) csource_test.go:109: failed to build program: // autogenerated by syzkaller (https://github.com/google/syzkaller) #define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include static void kill_and_wait(int pid, int* status) { kill(pid, SIGKILL); while (waitpid(-1, status, 0) != pid) { } } static void sleep_ms(uint64_t ms) { usleep(ms * 1000); } static uint64_t current_time_ms(void) { struct timespec ts; if (clock_gettime(CLOCK_MONOTONIC, &ts)) exit(1); return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000; } static void use_temporary_dir(void) { char tmpdir_template[] = "./syzkaller.XXXXXX"; char* tmpdir = mkdtemp(tmpdir_template); if (!tmpdir) exit(1); if (chmod(tmpdir, 0777)) exit(1); if (chdir(tmpdir)) exit(1); } static void __attribute__((noinline)) remove_dir(const char* dir) { DIR* dp = opendir(dir); if (dp == NULL) { if (errno == EACCES) { if (rmdir(dir)) exit(1); return; } exit(1); } struct dirent* ep = 0; while ((ep = readdir(dp))) { if (strcmp(ep->d_name, ".") == 0 || strcmp(ep->d_name, "..") == 0) continue; char filename[FILENAME_MAX]; snprintf(filename, sizeof(filename), "%s/%s", dir, ep->d_name); struct stat st; if (lstat(filename, &st)) exit(1); if (S_ISDIR(st.st_mode)) { remove_dir(filename); continue; } if (unlink(filename)) exit(1); } closedir(dp); if (rmdir(dir)) exit(1); } static void thread_start(void* (*fn)(void*), void* arg) { pthread_t th; pthread_attr_t attr; pthread_attr_init(&attr); pthread_attr_setstacksize(&attr, 128 << 10); int i = 0; for (; i < 100; i++) { if (pthread_create(&th, &attr, fn, arg) == 0) { pthread_attr_destroy(&attr); return; } if (errno == EAGAIN) { usleep(50); continue; } break; } exit(1); } typedef struct { pthread_mutex_t mu; pthread_cond_t cv; int state; } event_t; static void event_init(event_t* ev) { if (pthread_mutex_init(&ev->mu, 0)) exit(1); if (pthread_cond_init(&ev->cv, 0)) exit(1); ev->state = 0; } static void event_reset(event_t* ev) { ev->state = 0; } static void event_set(event_t* ev) { pthread_mutex_lock(&ev->mu); if (ev->state) exit(1); ev->state = 1; pthread_mutex_unlock(&ev->mu); pthread_cond_broadcast(&ev->cv); } static void event_wait(event_t* ev) { pthread_mutex_lock(&ev->mu); while (!ev->state) pthread_cond_wait(&ev->cv, &ev->mu); pthread_mutex_unlock(&ev->mu); } static int event_isset(event_t* ev) { pthread_mutex_lock(&ev->mu); int res = ev->state; pthread_mutex_unlock(&ev->mu); return res; } static int event_timedwait(event_t* ev, uint64_t timeout) { uint64_t start = current_time_ms(); uint64_t now = start; pthread_mutex_lock(&ev->mu); for (;;) { if (ev->state) break; uint64_t remain = timeout - (now - start); struct timespec ts; ts.tv_sec = remain / 1000; ts.tv_nsec = (remain % 1000) * 1000 * 1000; pthread_cond_timedwait(&ev->cv, &ev->mu, &ts); now = current_time_ms(); if (now - start > timeout) break; } int res = ev->state; pthread_mutex_unlock(&ev->mu); return res; } #define BITMASK(bf_off,bf_len) (((1ull << (bf_len)) - 1) << (bf_off)) #define STORE_BY_BITMASK(type,htobe,addr,val,bf_off,bf_len) *(type*)(addr) = htobe((htobe(*(type*)(addr)) & ~BITMASK((bf_off), (bf_len))) | (((type)(val) << (bf_off)) & BITMASK((bf_off), (bf_len)))) static void sandbox_common() { struct rlimit rlim; rlim.rlim_cur = rlim.rlim_max = 128 << 20; setrlimit(RLIMIT_AS, &rlim); rlim.rlim_cur = rlim.rlim_max = 8 << 20; setrlimit(RLIMIT_MEMLOCK, &rlim); rlim.rlim_cur = rlim.rlim_max = 1 << 20; setrlimit(RLIMIT_FSIZE, &rlim); rlim.rlim_cur = rlim.rlim_max = 1 << 20; setrlimit(RLIMIT_STACK, &rlim); rlim.rlim_cur = rlim.rlim_max = 0; setrlimit(RLIMIT_CORE, &rlim); rlim.rlim_cur = rlim.rlim_max = 256; setrlimit(RLIMIT_NOFILE, &rlim); } static void loop(); static int do_sandbox_none(void) { sandbox_common(); loop(); return 0; } static long syz_execute_func(volatile long text) { ((void (*)(void))(text))(); return 0; } struct thread_t { int created, call; event_t ready, done; }; static struct thread_t threads[16]; static void execute_call(int call); static int running; static void* thr(void* arg) { struct thread_t* th = (struct thread_t*)arg; for (;;) { event_wait(&th->ready); event_reset(&th->ready); execute_call(th->call); __atomic_fetch_sub(&running, 1, __ATOMIC_RELAXED); event_set(&th->done); } return 0; } static void execute_one(void) { int i, call, thread; for (call = 0; call < 13; call++) { for (thread = 0; thread < (int)(sizeof(threads) / sizeof(threads[0])); thread++) { struct thread_t* th = &threads[thread]; if (!th->created) { th->created = 1; event_init(&th->ready); event_init(&th->done); event_set(&th->done); thread_start(thr, th); } if (!event_isset(&th->done)) continue; event_reset(&th->done); th->call = call; __atomic_fetch_add(&running, 1, __ATOMIC_RELAXED); event_set(&th->ready); event_timedwait(&th->done, 500); break; } } for (i = 0; i < 100 && __atomic_load_n(&running, __ATOMIC_RELAXED); i++) sleep_ms(1); } static void execute_one(void); #define WAIT_FLAGS 0 static void loop(void) { int iter = 0; for (;; iter++) { char cwdbuf[32]; sprintf(cwdbuf, "./%d", iter); if (mkdir(cwdbuf, 0777)) exit(1); int pid = fork(); if (pid < 0) exit(1); if (pid == 0) { if (chdir(cwdbuf)) exit(1); execute_one(); exit(0); } int status = 0; uint64_t start = current_time_ms(); for (;;) { if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid) break; sleep_ms(1); if (current_time_ms() - start < 15000) { continue; } kill_and_wait(pid, &status); break; } remove_dir(cwdbuf); } } uint64_t r[3] = {0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff}; void execute_call(int call) { intptr_t res = 0; switch (call) { case 0: *(uint32_t*)0x10000000 = 0; *(uint16_t*)0x10000004 = 4; *(uint8_t*)0x10000006 = 1; *(uint32_t*)0x10000040 = 8; syscall(SYS_getsockopt, 0xffffff9c, 0x84, 0x1e, 0x10000000, 0x10000040); break; case 1: *(uint32_t*)0x10000080 = 0; *(uint32_t*)0x10000084 = 0x7fff; *(uint32_t*)0x100000c0 = 8; syscall(SYS_getsockopt, -1, 0x84, 0x19, 0x10000080, 0x100000c0); break; case 2: res = syscall(SYS_dup, -1); if (res != -1) r[0] = res; break; case 3: *(uint32_t*)0x10000100 = 7; syscall(SYS_setsockopt, (intptr_t)r[0], 0x84, 8, 0x10000100, 4); break; case 4: *(uint32_t*)0x10000540 = 0x10000140; *(uint32_t*)0x10000544 = 0x95; *(uint32_t*)0x10000548 = 0x10000200; *(uint32_t*)0x1000054c = 0xb3; *(uint32_t*)0x10000550 = 0x100002c0; *(uint32_t*)0x10000554 = 0xac; *(uint32_t*)0x10000558 = 0x10000380; *(uint32_t*)0x1000055c = 0xb6; *(uint32_t*)0x10000560 = 0x10000440; *(uint32_t*)0x10000564 = 0xce; syscall(SYS_readv, (intptr_t)r[0], 0x10000540, 5); break; case 5: syscall(SYS_thr_wake, -1); break; case 6: res = syscall(SYS_socket, 2, 2, 0x88); if (res != -1) r[1] = res; break; case 7: syscall(SYS_freebsd12_closefrom, (intptr_t)r[1]); break; case 8: memcpy((void*)0x10000580, "./file0\000", 8); res = syscall(SYS_open, 0x10000580, 4, 0x40); if (res != -1) r[2] = res; break; case 9: memcpy((void*)0x100005c0, "\x2a\x36\x8a\x90\xb4\x88\xd0\x4e\xe1\xec\xcd\x13\x97\x78\x04\x3b\x00\xa6\xf8\x1a\x36\x27\xb5\x93\xb0\xdf\xce\x33\x26\x5c\xda\x8f\xba\x8b\x0f\xa5\x38\xb3\xe3\x64\xad\x1d\x1f\x7d\xe1\x01\x1c\x63\xf5\x92\xa6\x4d\xd0\xec\x95\x3f\x9c\x05\x0f\x99\x1f\x42\xd2\x4d\x7b\xc4\x7c\x4d\x5b\xf3\x23\xe3\x93\x60\x5e\x59\xa1\xeb\x5b\xc4\xe9\x48\xf8\x38\x90\x91\x1e\xd3\x5b\x53\xa2\xb0\xd6\x3d\xb7\x9d\xc2\x1d\x61\x90\xf8\xb4\x34\xd6\xff\x85\xe5\x4f\xb9\xa2\x8a\x75\x66\xd1\xa2\x43\x37\xe7\x2e\x82\xac\xc9\xe5\x18\x33\x9a\xca\xc7\xdd\x89\x60\xa1\xc9\xc5\xcb\x3d\xa9\xe6\xbc\x0b\x69\x7e\x9d\xbb\xc6\x0f\xa8\xb7\x2c\x37\x19\x28\x6b\xf4\x4c\x2e\x8f\xc8\x35\x6e\x91\x25\xea\xe9\xbe\xd2\x16\xf3\x49\xc2\x92\xc9\x89\xd7\xdc\xd2\x52\xdf\xb7\x9c\x4f\xdb\xdc\x86\x51\x09\xf1\xe3\xcf\x9c\xd6\x7c\xfa\x8b\xab\xb7\xd3\x62\x7c\xe0\x08\x09\x10\xc5\x75\x5c\x92\xcb\xb2\xc1\x59\x17\x2a\x65\xea\x8a\x20\x85\xf4\xce\x10\xe1\x43\x6e\xf2\xf7\xd6\xf1\xdb\x70\x2a\x38\x7c\xd3\x56\x81\x29\x33\x31\xbd\x1b\xdb\xd6\x90\x27\x4a\x7c\x37\x2f\x84\xe4\xd5\x74\x87\x91\xd7\x07\xee\x5c\x12\x7e\xda\x8b\x84\x59\x6b\x0c\x10\x89\x0c\x88\x10\x06\xbe\xb3\x8a\xd5\x6d\x13\x9d\x8c\x74\xf1\x4f\x35\x98\xde\x55\x1e\xe3\xa1\x34\x66\xe6\x7c\xb3\xd2\xc5\xfd\x90\x90\x61\x52\x20\x58\xff\xbe\x9a\xe4\x31\x32\x55\x44\xc8\x94\xb9\x84\x1a\x4c\x25\x36\x32\xa3\x32\xc6\xe0\xd8\x81\x64\x5f\x90\xb6\x33\x7d\xb9\x9b\x7f\xad\x1b\xd1\x62\xf7\x3d\x11\xce\x5e\x57\xd5\xf3\x21\xfb\x68\xa7\x95\xc9\x90\x66\x2a\x35\x70\x6a\xf8\x45\xb5\x38\x3f\xe5\x0b\xa8\x63\x76\x13\xdd\x43\xaa\x7c\xf2\x00\x20\x35\x52\x18\xe0\x60\xaf\x26\x58\x86\x63\x49\x19\x7f\x30\xc8\x35\x35\x1b\xd6\x96\x83\xba\xaa\xb8\xbe\x6b\x4d\xa0\x4f\xb3\x5a\x42\x33\x14\xfa\xb6\x10\xb8\xd1\xcf\x04\x40\xfe\xdb\x28\xa5\xe1\x95\x84\xef\x78\x67\xbd\x96\x2b\xa4\xed\xe5\x13\xaf\x03\xdd\xa6\x69\xf7\x6c\x67\xd2\x8f\xb5\x07\xd5\x76\x2c\x61\xd5\x28\xf1\xcf\x3a\x7c\x56\x3e\xee\x1c\x04\x10\x62\x54\xce\x3f\xd8\x21\xc1\x7a\x0d\xef\xc3\x7d\x79\xa5\xde\x7e\xf9\x35\x2c\x7b\x41\x1c\x95\x39\x58\xd2\x54\xd0\xd3\xe5\xae\x61\x8a\x68\xa5\x3e\x45\x80\x9d\x49\x3c\x47\x4a\x20\x8c\xcc\x0f\x17\x0d\xf4\x83\x6d\x05\x93\xb7\xb7\xce\x87\x4f\xa0\x1f\xe0\x41\x5a\x59\x4f\x94\x1c\x31\xf0\x78\x4a\xad\x39\x4f\x06\xb8\x53\x70\x29\x55\x5c\xcc\x73\xea\xab\x0b\x36\x84\x6f\xe5\xcc\x6e\x92\xdb\x0c\x90\xa6\x2d\x1d\x36\xc3\x82\xc3\x51\x92\x17\x89\xdf\xbe\x0f\x60\xb1\x3d\xb0\x81\x4a\xaf\x4f\xa6\xf8\x13\xa7\xcf\x2a\xd1\x2e\xbe\x10\x50\xee\xf9\x27\x68\xc3\x13\x71\x8d\x8d\xb2\x02\xe3\xd1\x09\x3d\xcf\x59\x33\x45\x1e\xfd\x9b\x72\xee\x4e\xf7\x5d\xfc\x0e\xa0\xaf\xff\xb8\x1b\xbe\xe5\x50\x38\x2b\x6b\x12\x12\xce\xa0\x97\xb7\x09\xae\xc7\xc0\xa8\x57\x99\x12\x7d\x01\x37\x6f\x7b\xd6\xf2\x55\x73\x29\x72\xf8\x89\xb6\x84\x3f\x61\x54\x78\xee\x23\x12\x47\x37\xf8\x13\xb1\x8f\x31\x33\xaf\x12\xb4\xe4\x1e\x70\xbe\xa0\x58\xb0\x0a\x5f\x96\x5e\xd2\x37\x7b\x48\x91\x6b\xc2\xa7\x16\x2a\xdb\xf7\xbc\x9c\xa1\x1a\xea\xaf\x88\xc2\xf5\x22\x9a\xf6\xdd\x38\x61\x57\x4a\x0d\x5d\x5a\xe4\x82\xf2\xd7\xe8\x6d\x17\x20\x05\xcc\xa5\x65\xb1\x2b\x19\x9a\x7d\x81\x08\x7d\x85\x77\x6d\x61\x39\x40\xb4\x87\x35\x26\x6d\x45\xa4\xad\x11\xe1\x68\xe8\x9b\x89\x3e\x65\x0b\x98\x4b\x48\x3a\xbb\x31\x8f\x43\x2f\x13\xc6\x1f\x26\xf3\xde\xab\xc6\xb4\x5d\xcf\x5f\xf4\x57\x9d\xa8\x9a\x9d\x23\x25\x1d\x1a\x6b\xec\x12\x2c\xb2\x10\xfc\x3a\xfa\x89\x10\x23\x95\xe1\xd2\x6b\x14\xca\x41\x80\xc1\xb6\xfe\x0b\x30\x00\x04\x95\x50\x28\x3b\x61\x8a\xb1\xfd\x6b\x16\x58\x55\xb2\x97\xd9\x45\x7a\xc5\x49\x46\xfb\x99\xe6\xf0\xd8\x87\x2d\xb8\x79\x34\x34\x7b\x6d\x9a\x38\xa7\x31\xbf\x8b\xd0\x8f\x2a\x7a\x7d\x80\xd4\xcf\x24\xfa\x9a\x16\xc2\x09\xa1\x84\x94\x13\x3d\x6d\xd0\xd2\x92\xef\xeb\xa7\x87\x2c\x4d\x7b\xdf\xaf\xd4\x16\xe6\x34\xcf\x90\xab\x4d\xc9\xbc\xcc\x64\x32\x27\xa0\x55\x52\xee\xe0\xf9\x16\xec\x20\x2d\xcb\x01\x1c\x83\x94\xb1\x09\x96\x87\x3a\x0a\x4b\x7a\xee\x15\x14\xf5\x95\xd2\x32\x89\xa3\xbf\x62\x08\x5b\x0a\xee\xa0\x00\x92\x06\xe7\xa7\x06\x1a\xd8\x66\x35\x22\x41\x70\x8a\xcb\xcf\x3c\x2f\xc0\xfd\xca\xaa\xa8\xb3\xbe\x8e\x51\x0b\x99\xe0\x4b\x96\xdd\xaf\xa9\xf8\x48\x3b\x7a\x56\x8c\x5e\xba\xdd\xad\x56\x77\xd9\x14\x4a\x27\x0d\x04\x44\xae\xa3\xc0\x77\x5d\x24\x1d\x79\xba\xea\x30\xdc\x4b\xb1\x9a\x71\x24\x71\xf1\x12\x83\x8c\x75\x25\x49\x6d\x4a\x8f\xa6\x66\x58\x61\x03\x47\xd4\x90\xaf\x85\x30\x5c\xea\xbf\x0f\x35\xac\x27\x7f\x2e\xf1\xb6\xa8\xe5\x81\x3c\xe0\xbe\xa5\x87\xe6\x27\xd7\x25\xf1\xdb\x12\x41\x22\x2a\xcd\x41\xe1\x6c\x8a\x32\xbd\xb4\x07\x78\xd4\xa1\x0f\x87\xb1\xe9\x0e\x00\x6d\xfc\x03\xd2\x93\x45\x89\xd2\x59\x65\x24\x0e\xe9\xc2\x14\x19\xa2\xaa\x5b\xd8\xf3\xfc\xd3\x20\x8f\x9b\x52\x15\x55\x13\xa6\xda\x73\x46\x8d\xc0\x70\x31\x02\xbc\xca\x0e\xba\x18\xe8\x8c\x19\xda\x64\xab\x5c\x6b\xf6\xcb\x81\x09\x73\x01\x53\x69\x33\x32\xf7\xe1\x60\x86\x27\x19\xdc\x08\x17\x5e\xd0\x74\xf5\xbf\x28\x87\x70\x55\x01\x33\x1c\xf7\x52\x54\xfc\xe0\xe1\x45\xac\x22\x41\x87\x52\x93\x03\x6f\x2a\xa9\x65\x92\x19\x40\x73\xd0\x47\x54\xc2\x6f\x19\xe7\x76\x33\x32\xb4\x3d\x02\x87\xa2\x83\x47\xd5\x15\x5b\xac\xfd\x32\x62\x8f\x50\x0d\x9e\x9c\x04\xf5\x36\x9f\x63\x17\xe6\x06\xe4\x22\xf9\x8c\x48\xb1\x1f\x75\x5b\x2b\x0f\xdc\x79\x49\x4a\x76\x97\x00\xd3\x5a\x88\xa3\x30\xf0\x2c\xab\x2f\xb7\xb6\x50\x49\xe2\xd1\xe3\x50\xa6\xe0\x2d\x5d\x54\xac\x7c\x85\xf2\x68\xc0\xea\xf7\x70\x71\xd5\xac\xab\xed\x99\x42\x90\x30\xd0\x0b\x30\xc4\xca\xa2\x1c\xe3\x22\xd4\xf7\x80\xe8\x92\x20\x11\x29\xff\x77\x2d\x22\xcc\x4d\x4c\x27\x4b\x47\x99\x48\xd2\x2a\xcf\xc1\x76\x0b\x29\x17\xff\x30\x8e\x9a\x3a\xa2\x27\x79\xbd\x0f\x45\x3d\x11\xe0\xde\xe7\x88\xdc\xf9\x5b\x7b\xe9\x0c\x3b\x3b\x3a\x7f\xe5\x35\xda\x50\x3c\x38\x1e\x34\x6e\xb2\xa0\xb0\xe3\x75\xad\x72\x6e\xe2\xa3\x89\x19\x81\x0d\x5c\x54\x5e\xdc\xea\x1b\x23\x10\x9a\x3f\xb6\x8e\x30\xc0\x1c\xc7\x04\xa9\xd2\x3a\xe5\x5d\x18\xcc\x9f\xdf\xf0\x2b\xd4\x84\xd5\x9f\x46\x8d\x75\xa7\x96\x65\x7f\xdc\xa5\x9f\x55\xd4\xbe\x7e\xfd\x73\x78\xa3\x16\x85\x33\x4a\xdc\x0c\xac\xae\xf9\xaf\x56\x49\xda\x85\xdc\x6c\x59\x89\xcf\x8e\x2b\x99\x77\xa6\x2a\x8c\xa8\xbc\x27\x78\x2b\x1b\x30\x28\xa4\xde\x9a\x0e\x87\xdb\xab\x78\x79\x14\x4e\x40\xa8\x11\xf0\xb1\xb2\x88\x0d\x26\x82\x3c\x99\x0a\xde\xb7\xdf\x41\x11\x6f\xcf\x60\x22\xa0\x8d\x87\xac\x7c\x63\xec\xdf\xf7\x96\xda\xfa\x08\x2e\x5c\xd8\x5d\x6c\x3f\x17\xf8\x74\x0e\xa1\xe9\xa0\xc8\x86\xe0\xcd\x70\x74\xc4\x5d\xbc\x2d\xc7\xb3\x4c\x68\x59\xe0\x6a\x0c\xee\x9b\x20\xce\x43\x72\x4a\x41\x4e\xb7\x7b\x0b\x80\x4d\xff\xcc\x7b\xc4\x4d\xab\x7f\xa0\x2a\x38\x36\xea\xe3\x96\xf9\xed\xe4\x8d\x6d\xee\xa3\x33\xb0\xa9\x90\xeb\xbc\xd1\xb3\x36\xbb\x73\xd8\xe7\x2c\x72\xe1\x24\x49\xf1\xca\x72\x0a\x3b\xcd\x97\x88\xd1\xdc\xdd\xe5\x12\x14\xb7\x71\xa1\xca\x13\x89\xeb\xb5\xa0\x56\x45\xac\xf9\x73\x15\x65\x1a\xe8\x86\xec\xd5\xf0\x09\xa7\xcc\x62\xbf\xc4\x94\x59\xb7\x1f\xea\x3f\x8a\xdc\x05\xd3\x71\x29\x78\x1a\xc9\x07\x3e\xb8\x3f\x1e\xeb\x1f\xc8\x4a\x90\xc8\x31\x6c\x36\x16\x42\x59\xa7\xc2\x4e\x5a\x20\x0c\x35\x3e\xbd\x7b\xf2\x32\x4e\xff\x52\x16\x80\xb2\x18\xa8\x65\x4b\x6d\xf7\xb0\x46\xaf\xdc\x85\xa7\x8c\xfe\xe1\x74\xa6\xe9\x19\x78\xd4\xaf\x65\x11\xd3\x07\x99\x19\x5d\xf4\x28\x86\xc8\x32\x7d\xcc\x62\x4c\x29\x12\xf8\x3f\xe1\xbb\x63\x02\xec\x71\xa8\xf0\x98\xd5\xe0\x56\xd8\x95\x95\xc4\x60\x06\x2d\x29\xa5\x54\x6e\x5b\xa7\x7e\x0a\x17\x9a\x84\x8f\x03\x3e\x11\xaf\xc1\xa1\x98\x97\xe8\x3c\x2a\xb7\xeb\x58\x20\x72\x22\x15\x67\x67\xeb\xdb\x2e\x24\x26\xae\x2c\x59\x4c\x20\x5d\xa5\x96\x50\x28\x3b\x33\xcb\xf5\x0a\x77\xd6\x07\xde\x9e\x2f\xfe\x0f\x08\x0f\xd7\x73\xc7\xe0\x3f\x20\x50\x5d\xd0\xcb\x15\xcd\x89\x24\xcd\xd6\xb8\x7d\x7f\x61\x5b\xcc\xd2\xeb\x47\x83\x95\x61\xd7\x9a\x02\xca\x9c\xde\x0f\xde\x19\xb5\xa0\xc2\xa9\x0b\xd4\xa0\xc7\x36\x1b\xfd\xad\x53\x74\xac\x42\xb5\x16\x11\x15\x75\x9c\xfa\x2a\xc0\x8c\x16\x79\x5a\xb5\x2c\x84\xc5\x40\x71\x0b\x1d\x1d\x50\x06\xf2\xab\xa0\x98\xc6\xb6\x82\xa5\x1f\x03\xff\x5d\x79\xb6\xbc\xe0\x20\xce\x72\x6f\x7f\xa2\xe7\x68\x51\x38\x08\x7d\x60\x9c\x05\x05\x4a\x9f\x4c\x45\x68\x15\x2e\x89\x00\xd8\x66\xbd\x4a\x98\x0b\x07\xd3\x5b\x83\x36\x47\xd1\xf4\xe2\x65\x75\xd4\xde\x1c\x7a\x7c\xcf\x5c\xd1\x19\xd6\xdb\x4c\x72\xfb\x9c\x24\xe3\xa0\x85\xec\xdd\xe5\x21\xff\x18\xbe\xc6\xc1\x6c\x93\x14\x57\xcd\x8e\x26\x46\x1d\x48\xb5\x5c\x21\x1a\x27\xba\x49\x86\x63\xb3\x4e\xa0\xdc\xfd\x8c\xdf\xa1\x29\x00\xfe\x83\x67\xab\xbe\xac\x8e\x4e\xb1\xa1\x80\x36\xc9\xc1\x69\x49\x35\xa5\x73\xb6\x1a\xfc\x05\xc1\x26\x5a\xaf\xb6\xef\x58\x4e\x82\x3b\x84\x27\x64\xb7\x1d\xca\x33\x18\x37\x64\x9a\x51\xd0\xc9\x6c\xef\xec\x43\x58\x35\xb8\xf4\xb5\xda\xc5\xd1\xf2\x4b\xe9\x4d\x53\x78\xa1\x66\x4e\xfc\x1d\xaf\x55\x70\x15\x65\x7a\xdb\x77\x88\x1c\x5d\x18\x1c\xd9\xd1\xf1\xd3\xd9\x6b\xf7\x4d\x51\x67\x93\x02\x85\xb6\xf9\x8f\xef\x31\xbb\xef\x73\x78\xcf\x2f\x12\xc4\xc4\x79\xf9\x60\x76\xd8\x17\x0d\x76\x8d\xfd\x2f\xe8\x23\xcd\x14\xd6\xd7\x05\x9d\x75\xd9\x54\x7a\xb2\x2a\xda\x6f\xd1\xa3\x64\xae\x76\x29\xe6\xf7\xe4\x66\xa4\xc8\xa4\x94\x83\xe4\x55\x5f\x6c\x08\x81\xfd\x2c\xee\x97\x92\x32\x47\xf2\xca\x83\x9f\x88\xb1\xed\xa7\xc3\xb7\xc7\x5f\x53\x0c\x0f\xd6\x0b\x85\xe8\xb1\x0d\x4b\x58\xd7\xb8\x81\x5b\xbf\x1e\x4f\x42\xa1\x6b\x25\x22\x58\x88\xbd\xa2\x47\xd4\x6b\xe3\x55\x13\x25\xb6\x06\xf6\x1c\xe7\x76\xa9\x2f\x04\x68\x84\xfd\x27\x5e\x82\xd4\xc0\x87\x61\xb6\x0d\x69\x8c\x5a\xdd\xe7\x8d\xed\x62\xd8\x83\x5a\x1b\x23\xb3\xff\x96\x57\x6b\x2c\x19\x8f\x72\x2e\x76\xea\x22\x66\x73\x88\xa4\x4e\xd3\x16\xea\x6d\xc5\xbe\x4b\xd8\x40\x43\x57\x2a\x2a\xfa\x19\xcd\x9a\x84\xef\x5f\xfc\x28\xfb\x0f\x68\x9c\x4c\x25\x26\xce\xc2\x61\x50\x2f\x1e\x0a\xf6\x65\xcb\xde\xf5\x0e\x3a\x66\x9c\x0a\xa1\x36\x43\x07\xc8\x9d\x76\x6d\x58\x69\xe2\xc9\xe4\x14\xca\x21\x67\x35\xc0\x18\x26\xee\xe4\xea\x8b\xcb\x09\xb6\x7a\x8d\xd8\xf7\xed\xb6\x85\x36\xc6\xee\xfa\x0f\xa0\xd7\x8f\x4a\x86\xbd\x70\x48\x2d\x98\x52\xe4\x82\x91\xd1\xe1\x6a\xd1\x14\x34\x77\x9a\x27\x86\x1a\xf8\x19\x2a\x64\x27\x50\x84\xe7\xd9\xe0\x60\x4c\x52\x07\x3c\x33\x24\xb9\x57\x7b\x08\x80\x73\xab\x27\x00\x41\xd0\x41\xcf\x5f\xf1\x88\x31\xb8\x0e\x00\xa2\x73\xb6\x86\x00\x59\xbe\xc4\xa6\xc4\x19\x02\x64\x4e\xf9\x23\xe8\x90\xd5\x58\xb5\xa9\x6e\xf9\xee\xfe\x19\xde\x12\x07\x35\xe9\x89\x87\xa9\x8d\x53\xa5\x6e\x32\x26\xc5\x76\xcd\x2e\xf4\x86\xae\x13\x8f\xf3\xb6\x2e\xae\x33\xca\x91\xf8\xb7\x7d\x3a\x98\xf5\x83\xe8\x63\xd4\xeb\xe5\x3d\x0b\x3f\xa9\x7c\x47\x68\x28\x05\x93\xf9\x35\xf6\x14\x25\x95\xed\x15\x05\x7a\xdf\x8b\x60\x14\x86\x20\x49\x3a\xfe\xb5\xff\x5d\xe1\x7b\x6a\xc2\x6d\x5b\xbb\x7c\xf7\xf4\x71\x32\x64\x2e\xbe\x73\xde\x00\x51\xf0\x73\x61\x0b\x0c\x1e\xae\xf6\x74\x99\x19\xcf\x0e\x87\x14\x4c\x0d\x8f\x70\xee\xab\xb7\xfe\x6c\x2e\x58\xf9\x14\xe5\x44\xe8\xbe\x21\xc2\xf3\xa6\x02\xd6\x1c\xfc\xf0\x17\x65\xe4\x9c\xbc\xd0\xa6\xf9\xb1\x61\x6e\xc5\x6a\x4d\xe6\xe5\x2b\xc9\x79\x84\x0a\x84\x2d\x9b\x2d\xd4\xb5\xd5\x9d\x15\xb3\xce\x85\x13\x8b\xc9\x8c\x1e\x25\x4c\x84\x85\x3b\x67\x26\xb6\xfd\xb7\xbc\x79\xe9\x0d\x34\xbe\x3d\xd8\x6c\x4d\xef\xbf\xac\x94\x38\x80\x29\x2f\xec\x0d\x99\x5c\xdb\x52\x44\x51\x4d\x11\x51\x8e\xfe\x79\x20\x4d\x53\xc9\xcd\xa4\xa4\x87\xbf\x30\xe9\xff\x7f\x28\x6e\x53\x6a\xc1\xfe\x9f\xa1\xa7\x1f\x3e\xed\x0e\x47\xf8\x47\x1e\x88\xdb\x19\xfc\xd3\xe3\x19\x76\x98\x96\x97\x98\xf2\x6d\x5c\x9c\x4b\x8a\x7b\x93\x5a\x0f\xaf\x39\x5d\x2b\xa9\xee\x8c\x57\xe1\x37\x47\xad\x4d\x01\xa2\xee\xca\x7e\x85\x3f\x9c\x52\x73\xfc\x16\x18\x54\xc2\xe9\x66\xf8\x53\xa4\x88\x88\x44\x44\x22\x91\xed\x0b\x3c\x59\x31\x5f\x8c\xba\xe2\xc9\xa4\xaf\x08\x4d\x10\xcb\x4c\x7e\x64\x00\x01\xb7\xf3\x40\x13\x2d\x80\x47\x4c\x6d\xaa\x0e\x00\x9c\x38\x0d\xf0\xfe\xb5\x7d\x5e\xb1\xed\x8b\x40\xcd\xf2\x44\x6c\x8a\x42\x4d\x48\xeb\xe5\x89\x7d\x92\x2e\x42\xf2\x5b\x98\x83\x63\x95\xdb\x51\x3e\x49\x04\xfc\x25\x21\xac\xca\x53\x03\xac\x57\x64\x54\xe6\x02\xd4\xb3\x55\x20\x73\x68\x18\xa8\x46\x83\x79\x00\x0f\x8f\x30\xf9\xe3\x7d\x05\xc7\xbc\x1f\x16\xec\xc9\xac\xb0\xf8\xc6\x30\x96\x67\x75\x57\x5a\x40\x64\xa7\x70\xf7\xb5\x3f\x7c\xa7\xcc\xc0\x0b\xdb\x71\x19\x5d\x53\xcf\x21\xb7\x48\x20\x66\x52\x20\xc0\x57\x85\xb2\x25\xb2\xcb\xe2\x85\x5a\x5a\xe4\x0b\x9b\xce\x9e\x1e\xdd\xb7\x8a\x9e\x4c\x08\x25\xfb\x47\xff\xf9\xe6\xf3\x7a\x95\x54\xd9\xee\x04\x6c\xd1\x8a\x30\x1d\xae\xe2\x6e\xc5\xee\xf4\xf1\x01\x25\x6e\x0c\x59\xdf\x35\xcb\xb5\x19\x2f\x80\x16\x2b\xa3\x93\x7d\xbf\x36\x19\x98\x7b\xf1\x8b\x1d\x69\xd6\xe6\xe0\xc4\x2f\xea\xd7\xf0\xed\x6d\x2c\xf5\x4d\xa7\x8f\x87\x49\x60\xe4\x45\xa1\x08\xb7\xbb\x09\x87\xcb\x94\x27\xe1\x02\x3a\x1c\x85\xc2\x72\xc1\x0b\xca\x78\x1f\x98\xc7\x6e\x10\x67\x39\x24\xe6\x58\xe7\x36\xcc\x54\x4a\xfc\x0c\xde\xcd\xe8\xe5\x8d\x14\xa1\x8e\x4b\x74\x21\x50\x75\x1a\x46\xa1\x4d\x90\xd7\x10\xa9\xea\x82\x26\x6e\x46\x65\x4b\xbc\x15\x36\x85\xc1\x95\x99\x8b\x09\x23\xcc\xe3\x13\x50\xb7\x9b\x20\x39\xf2\x38\x55\xdc\x3b\xa1\x14\x38\xb1\x5c\xc0\x3a\xaa\xd9\xd3\x1b\x58\x19\xc4\xb4\x12\x34\xe9\x3a\x30\x61\x55\x47\x9a\x6b\xd4\x5d\xf8\x4e\x1c\xf9\xe8\xd8\xea\x0e\x89\x6d\x92\x88\xd2\xe4\x8d\x87\x30\xd8\x6b\xf8\x99\x7c\x62\xa8\x37\x8a\xd9\x59\x25\x67\x2d\xef\xba\xa1\xc9\xcb\xa3\x15\xce\x1e\x64\xf8\x61\x6b\x17\x4b\x88\xc5\x7a\xb7\x80\x74\x8a\xe9\x6c\xdb\xe3\x6d\xc4\xd7\x90\x54\xfd\xd7\xbe\xc3\xb4\x0b\x1f\xc7\xb1\x26\x6e\x19\x7c\xa7\xfe\x41\xd0\x74\x3a\xd9\xa8\xa1\x04\x30\xa4\xe1\xcc\xed\xf8\xaa\x48\x62\x3f\xff\xa2\xbf\xd3\x30\x36\x4b\x0e\x3a\xa1\xdb\x7d\x9b\x9a\xa4\xca\x8e\x17\xd9\x3c\x91\x6d\x6a\xfe\x57\xd3\x3f\x7b\x05\x9b\x67\x0b\xba\x34\xbc\xee\xd5\x11\x65\xff\xc0\xdc\xa6\xaf\x53\x2e\xb3\xef\x97\x6b\x29\x6e\x97\x5c\xe2\x5b\x40\xec\x63\x9c\xa4\x35\x93\xb2\x59\x46\xba\x82\xa8\x19\xe8\xf1\xaf\xa7\xdf\xa3\x45\xf3\x5c\xc0\x8b\xf3\xe7\x73\x02\x88\x6c\xaf\x08\xe1\x43\x24\x45\xf6\x7d\xc5\x9c\x69\x85\xe7\xf8\xc9\xbb\xc8\xa6\x8a\x39\x25\xe2\x0c\x14\xbd\xd2\xb6\x92\x2b\xc9\x24\x32\x1f\x58\x23\xdf\x51\x18\x34\xf2\xa2\x9e\x4d\x7e\x32\x0f\x96\x3c\x7a\xd3\xa1\x52\x22\xaf\xa2\x2a\x98\x37\x51\x47\xfb\x3f\x43\x33\xf5\xb8\xc1\x39\xa1\x04\x5d\x3c\xc6\xde\x57\xb2\x4a\x23\x41\xcc\x16\xb3\xdf\xe0\x69\xa3\x58\x65\xb8\x52\xc2\xf8\x4f\xd4\xec\x28\xec\x17\x8f\xd0\xb9\xff\x32\xe1\xe5\x29\xbf\x3d\xc9\x69\xae\x17\xdb\x13\x96\xc2\xcb\xa7\x4b\x6a\xd4\xb8\x32\x07\xea\xb4\xb1\x2c\x93\x60\x4d\xa7\xeb\xbd\x03\x9b\xae\x1e\xa1\xcb\xf5\xc9\x79\x87\x0e\x8e\x87\xae\xc0\xc8\x83\xe8\xb9\x52\xbe\xc1\x98\x67\x60\x40\x3b\x19\x3e\x16\x5f\xff\x20\xff\x51\x60\xa4\x34\xbd\x25\xa7\xcb\xec\xc4\xf8\xb9\xb7\xa5\x5b\x41\x29\x6f\x96\x09\x34\x2b\x8a\x76\xaf\xb6\xab\x98\x91\xbd\x17\x42\x70\x8a\x99\xf3\x4a\x56\xef\xc1\x39\x20\x0f\x1b\x5f\xe1\x57\xbb\x27\x62\x40\xe7\xe2\xa0\xa0\xf4\xea\x59\x1a\xc0\xb2\x4a\x21\xcc\xd1\xcc\x4e\xf6\xc8\xba\xa0\x82\xde\xa2\x3f\xe5\x49\x90\x1e\xcb\xe7\x8c\x47\x4b\x27\x54\x33\x49\x05\x9f\x91\x15\xa5\x91\x39\xe4\x5e\xe6\xf9\xff\x40\x52\x38\x54\x22\xc9\x38\x61\x59\x4f\xe9\x89\xfa\x84\xd2\x82\x1d\x63\xea\x55\xd9\x32\x7d\x70\x19\xe9\x12\xf7\xeb\xae\xbf\x24\xbf\x21\x16\xcc\xc1\xa6\xa2\x83\xc3\x97\xba\x3c\xaa\x5e\xa8\xd4\x4a\xc7\x36\x78\x3f\xb4\xef\x27\x15\x95\x70\xae\xf5\x11\x56\xe9\x0e\x69\x4f\xaa\x6d\x1a\x9e\x19\x21\xd8\xd1\xb1\x87\xc3\xea\x36\x7f\x33\x08\xcf\xe1\xb7\x41\x2a\x55\x8b\xf3\xce\x7f\xfe\xf3\x0f\x89\x27\xe4\x96\x12\x6e\x3e\xfe\x17\x1f\x4b\xee\xf7\x1b\xae\x80\xd3\x63\xf5\xb7\x3a\xa8\xf7\xa9\x12\x82\x42\x6c\xa3\xc7\xf0\x88\xe4\x25\x56\xc5\x65\x45\xbd\x0d\xe1\x96\x96\xd7\xb6\x07\x37\x65\x80\x08\xfd\x63\xc2\x3f\xef\xdc\xf5\x5a\x33\x58\x46\xb1\xa1\xda\xba\x80\x40\x4b\x4f\xc4\x87\xd1\x9f\x32\xe3\xad\x86\x81\x39\x0f\x2c\x57\xa2\x09\x74\x24\x4f\xd1\x12\xdd\x0c\x88\x30\xe4\x11\x60\xd5\xd7\x40\x59\x95\x13\xae\x0c\x03\xa9\x08\xa0\x08\xeb\x41\x19\x68\xd5\x3f\x5b\x9c\x1d\x8d\xd4\xf3\xf0\x36\x55\x92\xe6\x26\xf4\xf2\x01\x68\x52\x1a\x58\x73\x97\x67\xb1\x8c\xf2\x40\x0c\xa6\xf6\x97\xcc\xea\x44\x63\xaa\x90\x38\x90\x92\xf3\x5e\xca\x8a\x4b\x1b\x7c\x5d\xa0\x42\x83\xa6\x7b\x0f\xb1\x3f\x36\x04\x73\x76\xbf\x35\x91\xae\xbd\x37\xab\xf5\x08\xb3\x66\xf5\xb6\xf5\x44\x2f\x41\xc0\x57\x2f\xc8\xea\x15\xb5\xd9\x2c\xc3\x47\x9d\x01\x8e\x57\xd7\x2d\xbc\x1b\x03\x71\x0d\xae\x0a\x3e\x27\xf9\x2a\x6d\x96\xf0\x19\x2b\x7d\x63\xaf\x28\x27\xe6\x93\x92\x6c\x08\xf1\x30\x39\xe8\xf8\xc9\xec\x97\xd5\xff\xb3\x4e\x5e\xc2\x5f\x17\x55\x96\x4d\xf0\x48\xd2\x2f\x48\xee\xd1\x75\x6b\xf1\x66\x0c\x61\x9f\xb1\xa0\x36\x90\x1f\xd9\xad\x59\x04\xee\x35\x4e\x90\x17\x4b\x12\xee\x8d\x44\x99\xe1\x8f\x69\x9f\x6f\x8b\xdc\xfa\x19\x59\xb5\xad\xdb\xa3\xf4\x0e\xeb\xc7\x27\x59\x4c\x7d\x26\x7f\x5f\x12\x3e\xd2\x5d\xb5\x0e\xb9\x82\x88\xc2\xd5\x14\x16\xa1\x20\x59\x7f\x4e\xc0\xeb\xaa\x08\xa9\xf1\xaf\xa7\xa9\x2d\x63\xde\x95\x41\xd1\xd1\x13\xc8\xd6\x45\xbf\x02\x79\xdb\x6e\x7e\x1d\x0a\xe7\x1b\x78\x5e\x47\xe1\x40\x63\xec\xfb\x14\x86\x04\xd4\xb9\xe2\xba\x9a\xc9\x07\x44\xb6\xbf\xaa\xb6\x37\xe3\xe1\x5d\x4e\xea\x24\xcb\x4e\x9c\x76\xd8\xef\xa7\x50\xa7\xbe\x5c\x52\x41\xa4\x6c\x59\x6f\xd3\x96\x88\xb0\xdd\x52\xe5\x40\x64\x1c\x3f\x98\xd7\x09\x5c\x63\x47\xdd\xeb\xd3\x1c\xce\x61\x93\x80\x46\x07\xd3\x4f\xf8\x2f\x3e\x0d\xcc\xc9\x81\xa6\x8e\x0d\x69\x0a\x8b\x80\x6f\xf7\x57\xbb\x11", 4096); syscall(SYS_ioctl, (intptr_t)r[2], 0xc0f24413, 0x100005c0); break; case 10: *(uint8_t*)0x10000000 = 0; *(uint8_t*)0x10000001 = 0; *(uint8_t*)0x10000002 = 0; *(uint8_t*)0x10000003 = 0; *(uint8_t*)0x10000004 = 0; *(uint8_t*)0x10000005 = 0; *(uint8_t*)0x10000006 = -1; *(uint8_t*)0x10000007 = -1; *(uint8_t*)0x10000008 = -1; *(uint8_t*)0x10000009 = -1; *(uint8_t*)0x1000000a = -1; *(uint8_t*)0x1000000b = -1; *(uint16_t*)0x1000000c = htobe16(0x8100); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 1, 0, 3); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 1, 3, 1); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 4, 4, 12); *(uint16_t*)0x10000010 = htobe16(0x806); *(uint16_t*)0x10000012 = htobe16(1); *(uint16_t*)0x10000014 = htobe16(0x800); *(uint8_t*)0x10000016 = 6; *(uint8_t*)0x10000017 = 4; *(uint16_t*)0x10000018 = htobe16(9); *(uint8_t*)0x1000001a = 0xaa; *(uint8_t*)0x1000001b = 0xaa; *(uint8_t*)0x1000001c = 0xaa; *(uint8_t*)0x1000001d = 0xaa; *(uint8_t*)0x1000001e = 0xaa; *(uint8_t*)0x1000001f = 0xbb; *(uint32_t*)0x10000020 = htobe32(0xe0000001); *(uint8_t*)0x10000024 = 0xaa; *(uint8_t*)0x10000025 = 0xaa; *(uint8_t*)0x10000026 = 0xaa; *(uint8_t*)0x10000027 = 0xaa; *(uint8_t*)0x10000028 = 0xaa; *(uint8_t*)0x10000029 = 0xbb; *(uint32_t*)0x1000002a = htobe32(-1); break; case 11: memcpy((void*)0x10000040, "\x0f\x5a\x60\xb0\x06\xc4\xe1\x01\x6b\xd7\x65\x2f\xc4\xe1\xf8\x11\x81\x00\x00\x00\x80\xc4\xc1\x19\x60\x18\x3e\x67\x3e\x0f\x01\xd9\xf2\xe1\xab\xf3\xee\x66\x0f\x14\x8b\xf1\xff\xff\xff", 45); syz_execute_func(0x10000040); break; case 12: break; } } int main(void) { syscall(SYS_mmap, 0x10000000, 0x1000000, 7, 0x1012, -1, 0); use_temporary_dir(); do_sandbox_none(); return 0; } :350:11: error: use of undeclared identifier 'SYS_freebsd12_closefrom' syscall(SYS_freebsd12_closefrom, (intptr_t)r[1]); ^ 1 error generated. compiler invocation: clang [-o /tmp/syz-executor267170741 -DGOOS_freebsd=1 -DGOARCH_386=1 -DHOSTGOOS_freebsd=1 -x c - -m32 -O2 -pthread -Wall -Werror -Wparentheses -Wunused-const-variable -Wframe-larger-than=16384 -static -lc++ -Wno-overflow] --- FAIL: TestGenerate/freebsd/386/2 (1.14s) csource_test.go:108: opts: {Threaded:true Collide:true Repeat:true RepeatTimes:0 Procs:0 Slowdown:1 Sandbox:none Fault:false FaultCall:0 FaultNth:0 Leak:false NetInjection:false NetDevices:false NetReset:false Cgroups:false BinfmtMisc:false CloseFDs:false KCSAN:false DevlinkPCI:false USB:false VhciInjection:false Wifi:false IEEE802154:false Sysctl:false UseTmpDir:true HandleSegv:false Repro:false Trace:false} program: getsockopt$inet6_sctp_SCTP_EVENT(0xffffffffffffff9c, 0x84, 0x1e, &(0x7f0000000000)={0x0, 0x4, 0x1}, &(0x7f0000000040)=0x8) getsockopt$inet6_sctp_SCTP_MAX_BURST(0xffffffffffffffff, 0x84, 0x19, &(0x7f0000000080)={0x0, 0x7fff}, &(0x7f00000000c0)=0x8) r0 = dup(0xffffffffffffffff) setsockopt$inet6_sctp_SCTP_ADAPTATION_LAYER(r0, 0x84, 0x8, &(0x7f0000000100)={0x7}, 0x4) readv(r0, &(0x7f0000000540)=[{&(0x7f0000000140)=""/149, 0x95}, {&(0x7f0000000200)=""/179, 0xb3}, {&(0x7f00000002c0)=""/172, 0xac}, {&(0x7f0000000380)=""/182, 0xb6}, {&(0x7f0000000440)=""/206, 0xce}], 0x5) thr_wake(0xffffffffffffffff) r1 = socket$inet_udplite(0x2, 0x2, 0x88) freebsd12_closefrom(r1) r2 = open(&(0x7f0000000580)='./file0\x00', 0x4, 0x40) ioctl$DIOCGETSTATE(r2, 0xc0f24413, &(0x7f00000005c0)="2a368a90b488d04ee1eccd139778043b00a6f81a3627b593b0dfce33265cda8fba8b0fa538b3e364ad1d1f7de1011c63f592a64dd0ec953f9c050f991f42d24d7bc47c4d5bf323e393605e59a1eb5bc4e948f83890911ed35b53a2b0d63db79dc21d6190f8b434d6ff85e54fb9a28a7566d1a24337e72e82acc9e518339acac7dd8960a1c9c5cb3da9e6bc0b697e9dbbc60fa8b72c3719286bf44c2e8fc8356e9125eae9bed216f349c292c989d7dcd252dfb79c4fdbdc865109f1e3cf9cd67cfa8babb7d3627ce0080910c5755c92cbb2c159172a65ea8a2085f4ce10e1436ef2f7d6f1db702a387cd35681293331bd1bdbd690274a7c372f84e4d5748791d707ee5c127eda8b84596b0c10890c881006beb38ad56d139d8c74f14f3598de551ee3a13466e67cb3d2c5fd909061522058ffbe9ae431325544c894b9841a4c253632a332c6e0d881645f90b6337db99b7fad1bd162f73d11ce5e57d5f321fb68a795c990662a35706af845b5383fe50ba8637613dd43aa7cf20020355218e060af2658866349197f30c835351bd69683baaab8be6b4da04fb35a423314fab610b8d1cf0440fedb28a5e19584ef7867bd962ba4ede513af03dda669f76c67d28fb507d5762c61d528f1cf3a7c563eee1c04106254ce3fd821c17a0defc37d79a5de7ef9352c7b411c953958d254d0d3e5ae618a68a53e45809d493c474a208ccc0f170df4836d0593b7b7ce874fa01fe0415a594f941c31f0784aad394f06b8537029555ccc73eaab0b36846fe5cc6e92db0c90a62d1d36c382c351921789dfbe0f60b13db0814aaf4fa6f813a7cf2ad12ebe1050eef92768c313718d8db202e3d1093dcf5933451efd9b72ee4ef75dfc0ea0afffb81bbee550382b6b1212cea097b709aec7c0a85799127d01376f7bd6f255732972f889b6843f615478ee23124737f813b18f3133af12b4e41e70bea058b00a5f965ed2377b48916bc2a7162adbf7bc9ca11aeaaf88c2f5229af6dd3861574a0d5d5ae482f2d7e86d172005cca565b12b199a7d81087d85776d613940b48735266d45a4ad11e168e89b893e650b984b483abb318f432f13c61f26f3deabc6b45dcf5ff4579da89a9d23251d1a6bec122cb210fc3afa89102395e1d26b14ca4180c1b6fe0b3000049550283b618ab1fd6b165855b297d9457ac54946fb99e6f0d8872db87934347b6d9a38a731bf8bd08f2a7a7d80d4cf24fa9a16c209a18494133d6dd0d292efeba7872c4d7bdfafd416e634cf90ab4dc9bccc643227a05552eee0f916ec202dcb011c8394b10996873a0a4b7aee1514f595d23289a3bf62085b0aeea0009206e7a7061ad866352241708acbcf3c2fc0fdcaaaa8b3be8e510b99e04b96ddafa9f8483b7a568c5ebaddad5677d9144a270d0444aea3c0775d241d79baea30dc4bb19a712471f112838c7525496d4a8fa66658610347d490af85305ceabf0f35ac277f2ef1b6a8e5813ce0bea587e627d725f1db1241222acd41e16c8a32bdb40778d4a10f87b1e90e006dfc03d2934589d25965240ee9c21419a2aa5bd8f3fcd3208f9b52155513a6da73468dc0703102bcca0eba18e88c19da64ab5c6bf6cb8109730153693332f7e160862719dc08175ed074f5bf2887705501331cf75254fce0e145ac2241875293036f2aa96592194073d04754c26f19e7763332b43d0287a28347d5155bacfd32628f500d9e9c04f5369f6317e606e422f98c48b11f755b2b0fdc79494a769700d35a88a330f02cab2fb7b65049e2d1e350a6e02d5d54ac7c85f268c0eaf77071d5acabed99429030d00b30c4caa21ce322d4f780e892201129ff772d22cc4d4c274b479948d22acfc1760b2917ff308e9a3aa22779bd0f453d11e0dee788dcf95b7be90c3b3b3a7fe535da503c381e346eb2a0b0e375ad726ee2a38919810d5c545edcea1b23109a3fb68e30c01cc704a9d23ae55d18cc9fdff02bd484d59f468d75a796657fdca59f55d4be7efd7378a31685334adc0cacaef9af5649da85dc6c5989cf8e2b9977a62a8ca8bc27782b1b3028a4de9a0e87dbab7879144e40a811f0b1b2880d26823c990adeb7df41116fcf6022a08d87ac7c63ecdff796dafa082e5cd85d6c3f17f8740ea1e9a0c886e0cd7074c45dbc2dc7b34c6859e06a0cee9b20ce43724a414eb77b0b804dffcc7bc44dab7fa02a3836eae396f9ede48d6deea333b0a990ebbcd1b336bb73d8e72c72e12449f1ca720a3bcd9788d1dcdde51214b771a1ca1389ebb5a05645acf97315651ae886ecd5f009a7cc62bfc49459b71fea3f8adc05d37129781ac9073eb83f1eeb1fc84a90c8316c36164259a7c24e5a200c353ebd7bf2324eff521680b218a8654b6df7b046afdc85a78cfee174a6e91978d4af6511d30799195df42886c8327dcc624c2912f83fe1bb6302ec71a8f098d5e056d89595c460062d29a5546e5ba77e0a179a848f033e11afc1a19897e83c2ab7eb58207222156767ebdb2e2426ae2c594c205da59650283b33cbf50a77d607de9e2ffe0f080fd773c7e03f20505dd0cb15cd8924cdd6b87d7f615bccd2eb47839561d79a02ca9cde0fde19b5a0c2a90bd4a0c7361bfdad5374ac42b5161115759cfa2ac08c16795ab52c84c540710b1d1d5006f2aba098c6b682a51f03ff5d79b6bce020ce726f7fa2e7685138087d609c05054a9f4c4568152e8900d866bd4a980b07d35b833647d1f4e26575d4de1c7a7ccf5cd119d6db4c72fb9c24e3a085ecdde521ff18bec6c16c931457cd8e26461d48b55c211a27ba498663b34ea0dcfd8cdfa12900fe8367abbeac8e4eb1a18036c9c1694935a573b61afc05c1265aafb6ef584e823b842764b71dca331837649a51d0c96cefec435835b8f4b5dac5d1f24be94d5378a1664efc1daf557015657adb77881c5d181cd9d1f1d3d96bf74d5167930285b6f98fef31bbef7378cf2f12c4c479f96076d8170d768dfd2fe823cd14d6d7059d75d9547ab22ada6fd1a364ae7629e6f7e466a4c8a49483e4555f6c0881fd2cee97923247f2ca839f88b1eda7c3b7c75f530c0fd60b85e8b10d4b58d7b8815bbf1e4f42a16b25225888bda247d46be3551325b606f61ce776a92f046884fd275e82d4c08761b60d698c5adde78ded62d8835a1b23b3ff96576b2c198f722e76ea22667388a44ed316ea6dc5be4bd84043572a2afa19cd9a84ef5ffc28fb0f689c4c2526cec261502f1e0af665cbdef50e3a669c0aa1364307c89d766d5869e2c9e414ca216735c01826eee4ea8bcb09b67a8dd8f7edb68536c6eefa0fa0d78f4a86bd70482d9852e48291d1e16ad11434779a27861af8192a64275084e7d9e0604c52073c3324b9577b088073ab270041d041cf5ff18831b80e00a273b6860059bec4a6c41902644ef923e890d558b5a96ef9eefe19de120735e98987a98d53a56e3226c576cd2ef486ae138ff3b62eae33ca91f8b77d3a98f583e863d4ebe53d0b3fa97c4768280593f935f6142595ed15057adf8b60148620493afeb5ff5de17b6ac26d5bbb7cf7f47132642ebe73de0051f073610b0c1eaef6749919cf0e87144c0d8f70eeabb7fe6c2e58f914e544e8be21c2f3a602d61cfcf01765e49cbcd0a6f9b1616ec56a4de6e52bc979840a842d9b2dd4b5d59d15b3ce85138bc98c1e254c84853b6726b6fdb7bc79e90d34be3dd86c4defbfac943880292fec0d995cdb5244514d11518efe79204d53c9cda4a487bf30e9ff7f286e536ac1fe9fa1a71f3eed0e47f8471e88db19fcd3e3197698969798f26d5c9c4b8a7b935a0faf395d2ba9ee8c57e13747ad4d01a2eeca7e853f9c5273fc161854c2e966f853a4888844442291ed0b3c59315f8cbae2c9a4af084d10cb4c7e640001b7f340132d80474c6daa0e009c380df0feb57d5eb1ed8b40cdf2446c8a424d48ebe5897d922e42f25b98836395db513e4904fc2521acca5303ac576454e602d4b35520736818a8468379000f8f30f9e37d05c7bc1f16ecc9acb0f8c630966775575a4064a770f7b53f7ca7ccc00bdb71195d53cf21b74820665220c05785b225b2cbe2855a5ae40b9bce9e1eddb78a9e4c0825fb47fff9e6f37a9554d9ee046cd18a301daee26ec5eef4f101256e0c59df35cbb5192f80162ba3937dbf3619987bf18b1d69d6e6e0c42fead7f0ed6d2cf54da78f874960e445a108b7bb0987cb9427e1023a1c85c272c10bca781f98c76e10673924e658e736cc544afc0cdecde8e58d14a18e4b742150751a46a14d90d710a9ea82266e46654bbc153685c195998b0923cce31350b79b2039f23855dc3ba11438b15cc03aaad9d31b5819c4b41234e93a306155479a6bd45df84e1cf9e8d8ea0e896d9288d2e48d8730d86bf8997c62a8378ad95925672defbaa1c9cba315ce1e64f8616b174b88c57ab780748ae96cdbe36dc4d79054fdd7bec3b40b1fc7b1266e197ca7fe41d0743ad9a8a10430a4e1ccedf8aa48623fffa2bfd330364b0e3aa1db7d9b9aa4ca8e17d93c916d6afe57d33f7b059b670bba34bceed51165ffc0dca6af532eb3ef976b296e975ce25b40ec639ca43593b25946ba82a819e8f1afa7dfa345f35cc08bf3e77302886caf08e1432445f67dc59c6985e7f8c9bbc8a68a3925e20c14bdd2b6922bc924321f5823df511834f2a29e4d7e320f963c7ad3a15222afa22a98375147fb3f4333f5b8c139a1045d3cc6de57b24a2341cc16b3dfe069a35865b852c2f84fd4ec28ec178fd0b9ff32e1e529bf3dc969ae17db1396c2cba74b6ad4b83207eab4b12c93604da7ebbd039bae1ea1cbf5c979870e8e87aec0c883e8b952bec1986760403b193e165fff20ff5160a434bd25a7cbecc4f8b9b7a55b41296f9609342b8a76afb6ab9891bd1742708a99f34a56efc139200f1b5fe157bb276240e7e2a0a0f4ea591ac0b24a21ccd1cc4ef6c8baa082dea23fe549901ecbe78c474b27543349059f9115a59139e45ee6f9ff4052385422c93861594fe989fa84d2821d63ea55d9327d7019e912f7ebaebf24bf2116ccc1a6a283c397ba3caa5ea8d44ac736783fb4ef27159570aef51156e90e694faa6d1a9e1921d8d1b187c3ea367f3308cfe1b7412a558bf3ce7ffef30f8927e496126e3efe171f4beef71bae80d363f5b73aa8f7a91282426ca3c7f088e42556c56545bd0de19696d7b60737658008fd63c23fefdcf55a335846b1a1daba80404b4fc487d19f32e3ad8681390f2c57a20974244fd112dd0c8830e41160d5d740599513ae0c03a908a008eb411968d53f5b9c1d8dd4f3f0365592e626f4f20168521a58739767b18cf2400ca6f697ccea4463aa90389092f35eca8a4b1b7c5da04283a67b0fb13f36047376bf3591aebd37abf508b366f5b6f5442f41c0572fc8ea15b5d92cc3479d018e57d72dbc1b03710dae0a3e27f92a6d96f0192b7d63af2827e693926c08f13039e8f8c9ec97d5ffb34e5ec25f1755964df048d22f48eed1756bf1660c619fb1a036901fd9ad5904ee354e90174b12ee8d4499e18f699f6f8bdcfa1959b5addba3f40eebc727594c7d267f5f123ed25db50eb98288c2d51416a120597f4ec0ebaa08a9f1afa7a92d63de9541d1d113c8d645bf0279db6e7e1d0ae71b785e47e14063ecfb148604d4b9e2ba9ac90744b6bfaab637e3e15d4eea24cb4e9c76d8efa750a7be5c5241a46c596fd39688b0dd52e540641c3f98d7095c6347ddebd31cce6193804607d34ff82f3e0dccc981a68e0d690a8b806ff757bb11") syz_emit_ethernet(0x2e, &(0x7f0000000000)={@empty, @broadcast, [{[], {0x8100, 0x1, 0x1, 0x4}}], {@arp={0x806, @ether_ipv4={0x1, 0x800, 0x6, 0x4, 0x9, @remote, @multicast1, @remote, @broadcast}}}}) syz_execute_func(&(0x7f0000000040)="0f5a60b006c4e1016bd7652fc4e1f8118100000080c4c11960183e673e0f01d9f2e1abf3ee660f148bf1ffffff") syz_extract_tcp_res(&(0x7f0000000080), 0x7fffffff, 0x7) csource_test.go:109: failed to build program: // autogenerated by syzkaller (https://github.com/google/syzkaller) #define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include static void kill_and_wait(int pid, int* status) { kill(pid, SIGKILL); while (waitpid(-1, status, 0) != pid) { } } static void sleep_ms(uint64_t ms) { usleep(ms * 1000); } static uint64_t current_time_ms(void) { struct timespec ts; if (clock_gettime(CLOCK_MONOTONIC, &ts)) exit(1); return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000; } static void use_temporary_dir(void) { char tmpdir_template[] = "./syzkaller.XXXXXX"; char* tmpdir = mkdtemp(tmpdir_template); if (!tmpdir) exit(1); if (chmod(tmpdir, 0777)) exit(1); if (chdir(tmpdir)) exit(1); } static void __attribute__((noinline)) remove_dir(const char* dir) { DIR* dp = opendir(dir); if (dp == NULL) { if (errno == EACCES) { if (rmdir(dir)) exit(1); return; } exit(1); } struct dirent* ep = 0; while ((ep = readdir(dp))) { if (strcmp(ep->d_name, ".") == 0 || strcmp(ep->d_name, "..") == 0) continue; char filename[FILENAME_MAX]; snprintf(filename, sizeof(filename), "%s/%s", dir, ep->d_name); struct stat st; if (lstat(filename, &st)) exit(1); if (S_ISDIR(st.st_mode)) { remove_dir(filename); continue; } if (unlink(filename)) exit(1); } closedir(dp); if (rmdir(dir)) exit(1); } static void thread_start(void* (*fn)(void*), void* arg) { pthread_t th; pthread_attr_t attr; pthread_attr_init(&attr); pthread_attr_setstacksize(&attr, 128 << 10); int i = 0; for (; i < 100; i++) { if (pthread_create(&th, &attr, fn, arg) == 0) { pthread_attr_destroy(&attr); return; } if (errno == EAGAIN) { usleep(50); continue; } break; } exit(1); } typedef struct { pthread_mutex_t mu; pthread_cond_t cv; int state; } event_t; static void event_init(event_t* ev) { if (pthread_mutex_init(&ev->mu, 0)) exit(1); if (pthread_cond_init(&ev->cv, 0)) exit(1); ev->state = 0; } static void event_reset(event_t* ev) { ev->state = 0; } static void event_set(event_t* ev) { pthread_mutex_lock(&ev->mu); if (ev->state) exit(1); ev->state = 1; pthread_mutex_unlock(&ev->mu); pthread_cond_broadcast(&ev->cv); } static void event_wait(event_t* ev) { pthread_mutex_lock(&ev->mu); while (!ev->state) pthread_cond_wait(&ev->cv, &ev->mu); pthread_mutex_unlock(&ev->mu); } static int event_isset(event_t* ev) { pthread_mutex_lock(&ev->mu); int res = ev->state; pthread_mutex_unlock(&ev->mu); return res; } static int event_timedwait(event_t* ev, uint64_t timeout) { uint64_t start = current_time_ms(); uint64_t now = start; pthread_mutex_lock(&ev->mu); for (;;) { if (ev->state) break; uint64_t remain = timeout - (now - start); struct timespec ts; ts.tv_sec = remain / 1000; ts.tv_nsec = (remain % 1000) * 1000 * 1000; pthread_cond_timedwait(&ev->cv, &ev->mu, &ts); now = current_time_ms(); if (now - start > timeout) break; } int res = ev->state; pthread_mutex_unlock(&ev->mu); return res; } #define BITMASK(bf_off,bf_len) (((1ull << (bf_len)) - 1) << (bf_off)) #define STORE_BY_BITMASK(type,htobe,addr,val,bf_off,bf_len) *(type*)(addr) = htobe((htobe(*(type*)(addr)) & ~BITMASK((bf_off), (bf_len))) | (((type)(val) << (bf_off)) & BITMASK((bf_off), (bf_len)))) static void sandbox_common() { struct rlimit rlim; rlim.rlim_cur = rlim.rlim_max = 128 << 20; setrlimit(RLIMIT_AS, &rlim); rlim.rlim_cur = rlim.rlim_max = 8 << 20; setrlimit(RLIMIT_MEMLOCK, &rlim); rlim.rlim_cur = rlim.rlim_max = 1 << 20; setrlimit(RLIMIT_FSIZE, &rlim); rlim.rlim_cur = rlim.rlim_max = 1 << 20; setrlimit(RLIMIT_STACK, &rlim); rlim.rlim_cur = rlim.rlim_max = 0; setrlimit(RLIMIT_CORE, &rlim); rlim.rlim_cur = rlim.rlim_max = 256; setrlimit(RLIMIT_NOFILE, &rlim); } static void loop(); static int do_sandbox_none(void) { sandbox_common(); loop(); return 0; } static long syz_execute_func(volatile long text) { ((void (*)(void))(text))(); return 0; } struct thread_t { int created, call; event_t ready, done; }; static struct thread_t threads[16]; static void execute_call(int call); static int running; static void* thr(void* arg) { struct thread_t* th = (struct thread_t*)arg; for (;;) { event_wait(&th->ready); event_reset(&th->ready); execute_call(th->call); __atomic_fetch_sub(&running, 1, __ATOMIC_RELAXED); event_set(&th->done); } return 0; } static void execute_one(void) { int i, call, thread; int collide = 0; again: for (call = 0; call < 13; call++) { for (thread = 0; thread < (int)(sizeof(threads) / sizeof(threads[0])); thread++) { struct thread_t* th = &threads[thread]; if (!th->created) { th->created = 1; event_init(&th->ready); event_init(&th->done); event_set(&th->done); thread_start(thr, th); } if (!event_isset(&th->done)) continue; event_reset(&th->done); th->call = call; __atomic_fetch_add(&running, 1, __ATOMIC_RELAXED); event_set(&th->ready); if (collide && (call % 2) == 0) break; event_timedwait(&th->done, 50); break; } } for (i = 0; i < 100 && __atomic_load_n(&running, __ATOMIC_RELAXED); i++) sleep_ms(1); if (!collide) { collide = 1; goto again; } } static void execute_one(void); #define WAIT_FLAGS 0 static void loop(void) { int iter = 0; for (;; iter++) { char cwdbuf[32]; sprintf(cwdbuf, "./%d", iter); if (mkdir(cwdbuf, 0777)) exit(1); int pid = fork(); if (pid < 0) exit(1); if (pid == 0) { if (chdir(cwdbuf)) exit(1); execute_one(); exit(0); } int status = 0; uint64_t start = current_time_ms(); for (;;) { if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid) break; sleep_ms(1); if (current_time_ms() - start < 5000) { continue; } kill_and_wait(pid, &status); break; } remove_dir(cwdbuf); } } uint64_t r[3] = {0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff}; void execute_call(int call) { intptr_t res = 0; switch (call) { case 0: *(uint32_t*)0x10000000 = 0; *(uint16_t*)0x10000004 = 4; *(uint8_t*)0x10000006 = 1; *(uint32_t*)0x10000040 = 8; syscall(SYS_getsockopt, 0xffffff9c, 0x84, 0x1e, 0x10000000, 0x10000040); break; case 1: *(uint32_t*)0x10000080 = 0; *(uint32_t*)0x10000084 = 0x7fff; *(uint32_t*)0x100000c0 = 8; syscall(SYS_getsockopt, -1, 0x84, 0x19, 0x10000080, 0x100000c0); break; case 2: res = syscall(SYS_dup, -1); if (res != -1) r[0] = res; break; case 3: *(uint32_t*)0x10000100 = 7; syscall(SYS_setsockopt, (intptr_t)r[0], 0x84, 8, 0x10000100, 4); break; case 4: *(uint32_t*)0x10000540 = 0x10000140; *(uint32_t*)0x10000544 = 0x95; *(uint32_t*)0x10000548 = 0x10000200; *(uint32_t*)0x1000054c = 0xb3; *(uint32_t*)0x10000550 = 0x100002c0; *(uint32_t*)0x10000554 = 0xac; *(uint32_t*)0x10000558 = 0x10000380; *(uint32_t*)0x1000055c = 0xb6; *(uint32_t*)0x10000560 = 0x10000440; *(uint32_t*)0x10000564 = 0xce; syscall(SYS_readv, (intptr_t)r[0], 0x10000540, 5); break; case 5: syscall(SYS_thr_wake, -1); break; case 6: res = syscall(SYS_socket, 2, 2, 0x88); if (res != -1) r[1] = res; break; case 7: syscall(SYS_freebsd12_closefrom, (intptr_t)r[1]); break; case 8: memcpy((void*)0x10000580, "./file0\000", 8); res = syscall(SYS_open, 0x10000580, 4, 0x40); if (res != -1) r[2] = res; break; case 9: memcpy((void*)0x100005c0, "\x2a\x36\x8a\x90\xb4\x88\xd0\x4e\xe1\xec\xcd\x13\x97\x78\x04\x3b\x00\xa6\xf8\x1a\x36\x27\xb5\x93\xb0\xdf\xce\x33\x26\x5c\xda\x8f\xba\x8b\x0f\xa5\x38\xb3\xe3\x64\xad\x1d\x1f\x7d\xe1\x01\x1c\x63\xf5\x92\xa6\x4d\xd0\xec\x95\x3f\x9c\x05\x0f\x99\x1f\x42\xd2\x4d\x7b\xc4\x7c\x4d\x5b\xf3\x23\xe3\x93\x60\x5e\x59\xa1\xeb\x5b\xc4\xe9\x48\xf8\x38\x90\x91\x1e\xd3\x5b\x53\xa2\xb0\xd6\x3d\xb7\x9d\xc2\x1d\x61\x90\xf8\xb4\x34\xd6\xff\x85\xe5\x4f\xb9\xa2\x8a\x75\x66\xd1\xa2\x43\x37\xe7\x2e\x82\xac\xc9\xe5\x18\x33\x9a\xca\xc7\xdd\x89\x60\xa1\xc9\xc5\xcb\x3d\xa9\xe6\xbc\x0b\x69\x7e\x9d\xbb\xc6\x0f\xa8\xb7\x2c\x37\x19\x28\x6b\xf4\x4c\x2e\x8f\xc8\x35\x6e\x91\x25\xea\xe9\xbe\xd2\x16\xf3\x49\xc2\x92\xc9\x89\xd7\xdc\xd2\x52\xdf\xb7\x9c\x4f\xdb\xdc\x86\x51\x09\xf1\xe3\xcf\x9c\xd6\x7c\xfa\x8b\xab\xb7\xd3\x62\x7c\xe0\x08\x09\x10\xc5\x75\x5c\x92\xcb\xb2\xc1\x59\x17\x2a\x65\xea\x8a\x20\x85\xf4\xce\x10\xe1\x43\x6e\xf2\xf7\xd6\xf1\xdb\x70\x2a\x38\x7c\xd3\x56\x81\x29\x33\x31\xbd\x1b\xdb\xd6\x90\x27\x4a\x7c\x37\x2f\x84\xe4\xd5\x74\x87\x91\xd7\x07\xee\x5c\x12\x7e\xda\x8b\x84\x59\x6b\x0c\x10\x89\x0c\x88\x10\x06\xbe\xb3\x8a\xd5\x6d\x13\x9d\x8c\x74\xf1\x4f\x35\x98\xde\x55\x1e\xe3\xa1\x34\x66\xe6\x7c\xb3\xd2\xc5\xfd\x90\x90\x61\x52\x20\x58\xff\xbe\x9a\xe4\x31\x32\x55\x44\xc8\x94\xb9\x84\x1a\x4c\x25\x36\x32\xa3\x32\xc6\xe0\xd8\x81\x64\x5f\x90\xb6\x33\x7d\xb9\x9b\x7f\xad\x1b\xd1\x62\xf7\x3d\x11\xce\x5e\x57\xd5\xf3\x21\xfb\x68\xa7\x95\xc9\x90\x66\x2a\x35\x70\x6a\xf8\x45\xb5\x38\x3f\xe5\x0b\xa8\x63\x76\x13\xdd\x43\xaa\x7c\xf2\x00\x20\x35\x52\x18\xe0\x60\xaf\x26\x58\x86\x63\x49\x19\x7f\x30\xc8\x35\x35\x1b\xd6\x96\x83\xba\xaa\xb8\xbe\x6b\x4d\xa0\x4f\xb3\x5a\x42\x33\x14\xfa\xb6\x10\xb8\xd1\xcf\x04\x40\xfe\xdb\x28\xa5\xe1\x95\x84\xef\x78\x67\xbd\x96\x2b\xa4\xed\xe5\x13\xaf\x03\xdd\xa6\x69\xf7\x6c\x67\xd2\x8f\xb5\x07\xd5\x76\x2c\x61\xd5\x28\xf1\xcf\x3a\x7c\x56\x3e\xee\x1c\x04\x10\x62\x54\xce\x3f\xd8\x21\xc1\x7a\x0d\xef\xc3\x7d\x79\xa5\xde\x7e\xf9\x35\x2c\x7b\x41\x1c\x95\x39\x58\xd2\x54\xd0\xd3\xe5\xae\x61\x8a\x68\xa5\x3e\x45\x80\x9d\x49\x3c\x47\x4a\x20\x8c\xcc\x0f\x17\x0d\xf4\x83\x6d\x05\x93\xb7\xb7\xce\x87\x4f\xa0\x1f\xe0\x41\x5a\x59\x4f\x94\x1c\x31\xf0\x78\x4a\xad\x39\x4f\x06\xb8\x53\x70\x29\x55\x5c\xcc\x73\xea\xab\x0b\x36\x84\x6f\xe5\xcc\x6e\x92\xdb\x0c\x90\xa6\x2d\x1d\x36\xc3\x82\xc3\x51\x92\x17\x89\xdf\xbe\x0f\x60\xb1\x3d\xb0\x81\x4a\xaf\x4f\xa6\xf8\x13\xa7\xcf\x2a\xd1\x2e\xbe\x10\x50\xee\xf9\x27\x68\xc3\x13\x71\x8d\x8d\xb2\x02\xe3\xd1\x09\x3d\xcf\x59\x33\x45\x1e\xfd\x9b\x72\xee\x4e\xf7\x5d\xfc\x0e\xa0\xaf\xff\xb8\x1b\xbe\xe5\x50\x38\x2b\x6b\x12\x12\xce\xa0\x97\xb7\x09\xae\xc7\xc0\xa8\x57\x99\x12\x7d\x01\x37\x6f\x7b\xd6\xf2\x55\x73\x29\x72\xf8\x89\xb6\x84\x3f\x61\x54\x78\xee\x23\x12\x47\x37\xf8\x13\xb1\x8f\x31\x33\xaf\x12\xb4\xe4\x1e\x70\xbe\xa0\x58\xb0\x0a\x5f\x96\x5e\xd2\x37\x7b\x48\x91\x6b\xc2\xa7\x16\x2a\xdb\xf7\xbc\x9c\xa1\x1a\xea\xaf\x88\xc2\xf5\x22\x9a\xf6\xdd\x38\x61\x57\x4a\x0d\x5d\x5a\xe4\x82\xf2\xd7\xe8\x6d\x17\x20\x05\xcc\xa5\x65\xb1\x2b\x19\x9a\x7d\x81\x08\x7d\x85\x77\x6d\x61\x39\x40\xb4\x87\x35\x26\x6d\x45\xa4\xad\x11\xe1\x68\xe8\x9b\x89\x3e\x65\x0b\x98\x4b\x48\x3a\xbb\x31\x8f\x43\x2f\x13\xc6\x1f\x26\xf3\xde\xab\xc6\xb4\x5d\xcf\x5f\xf4\x57\x9d\xa8\x9a\x9d\x23\x25\x1d\x1a\x6b\xec\x12\x2c\xb2\x10\xfc\x3a\xfa\x89\x10\x23\x95\xe1\xd2\x6b\x14\xca\x41\x80\xc1\xb6\xfe\x0b\x30\x00\x04\x95\x50\x28\x3b\x61\x8a\xb1\xfd\x6b\x16\x58\x55\xb2\x97\xd9\x45\x7a\xc5\x49\x46\xfb\x99\xe6\xf0\xd8\x87\x2d\xb8\x79\x34\x34\x7b\x6d\x9a\x38\xa7\x31\xbf\x8b\xd0\x8f\x2a\x7a\x7d\x80\xd4\xcf\x24\xfa\x9a\x16\xc2\x09\xa1\x84\x94\x13\x3d\x6d\xd0\xd2\x92\xef\xeb\xa7\x87\x2c\x4d\x7b\xdf\xaf\xd4\x16\xe6\x34\xcf\x90\xab\x4d\xc9\xbc\xcc\x64\x32\x27\xa0\x55\x52\xee\xe0\xf9\x16\xec\x20\x2d\xcb\x01\x1c\x83\x94\xb1\x09\x96\x87\x3a\x0a\x4b\x7a\xee\x15\x14\xf5\x95\xd2\x32\x89\xa3\xbf\x62\x08\x5b\x0a\xee\xa0\x00\x92\x06\xe7\xa7\x06\x1a\xd8\x66\x35\x22\x41\x70\x8a\xcb\xcf\x3c\x2f\xc0\xfd\xca\xaa\xa8\xb3\xbe\x8e\x51\x0b\x99\xe0\x4b\x96\xdd\xaf\xa9\xf8\x48\x3b\x7a\x56\x8c\x5e\xba\xdd\xad\x56\x77\xd9\x14\x4a\x27\x0d\x04\x44\xae\xa3\xc0\x77\x5d\x24\x1d\x79\xba\xea\x30\xdc\x4b\xb1\x9a\x71\x24\x71\xf1\x12\x83\x8c\x75\x25\x49\x6d\x4a\x8f\xa6\x66\x58\x61\x03\x47\xd4\x90\xaf\x85\x30\x5c\xea\xbf\x0f\x35\xac\x27\x7f\x2e\xf1\xb6\xa8\xe5\x81\x3c\xe0\xbe\xa5\x87\xe6\x27\xd7\x25\xf1\xdb\x12\x41\x22\x2a\xcd\x41\xe1\x6c\x8a\x32\xbd\xb4\x07\x78\xd4\xa1\x0f\x87\xb1\xe9\x0e\x00\x6d\xfc\x03\xd2\x93\x45\x89\xd2\x59\x65\x24\x0e\xe9\xc2\x14\x19\xa2\xaa\x5b\xd8\xf3\xfc\xd3\x20\x8f\x9b\x52\x15\x55\x13\xa6\xda\x73\x46\x8d\xc0\x70\x31\x02\xbc\xca\x0e\xba\x18\xe8\x8c\x19\xda\x64\xab\x5c\x6b\xf6\xcb\x81\x09\x73\x01\x53\x69\x33\x32\xf7\xe1\x60\x86\x27\x19\xdc\x08\x17\x5e\xd0\x74\xf5\xbf\x28\x87\x70\x55\x01\x33\x1c\xf7\x52\x54\xfc\xe0\xe1\x45\xac\x22\x41\x87\x52\x93\x03\x6f\x2a\xa9\x65\x92\x19\x40\x73\xd0\x47\x54\xc2\x6f\x19\xe7\x76\x33\x32\xb4\x3d\x02\x87\xa2\x83\x47\xd5\x15\x5b\xac\xfd\x32\x62\x8f\x50\x0d\x9e\x9c\x04\xf5\x36\x9f\x63\x17\xe6\x06\xe4\x22\xf9\x8c\x48\xb1\x1f\x75\x5b\x2b\x0f\xdc\x79\x49\x4a\x76\x97\x00\xd3\x5a\x88\xa3\x30\xf0\x2c\xab\x2f\xb7\xb6\x50\x49\xe2\xd1\xe3\x50\xa6\xe0\x2d\x5d\x54\xac\x7c\x85\xf2\x68\xc0\xea\xf7\x70\x71\xd5\xac\xab\xed\x99\x42\x90\x30\xd0\x0b\x30\xc4\xca\xa2\x1c\xe3\x22\xd4\xf7\x80\xe8\x92\x20\x11\x29\xff\x77\x2d\x22\xcc\x4d\x4c\x27\x4b\x47\x99\x48\xd2\x2a\xcf\xc1\x76\x0b\x29\x17\xff\x30\x8e\x9a\x3a\xa2\x27\x79\xbd\x0f\x45\x3d\x11\xe0\xde\xe7\x88\xdc\xf9\x5b\x7b\xe9\x0c\x3b\x3b\x3a\x7f\xe5\x35\xda\x50\x3c\x38\x1e\x34\x6e\xb2\xa0\xb0\xe3\x75\xad\x72\x6e\xe2\xa3\x89\x19\x81\x0d\x5c\x54\x5e\xdc\xea\x1b\x23\x10\x9a\x3f\xb6\x8e\x30\xc0\x1c\xc7\x04\xa9\xd2\x3a\xe5\x5d\x18\xcc\x9f\xdf\xf0\x2b\xd4\x84\xd5\x9f\x46\x8d\x75\xa7\x96\x65\x7f\xdc\xa5\x9f\x55\xd4\xbe\x7e\xfd\x73\x78\xa3\x16\x85\x33\x4a\xdc\x0c\xac\xae\xf9\xaf\x56\x49\xda\x85\xdc\x6c\x59\x89\xcf\x8e\x2b\x99\x77\xa6\x2a\x8c\xa8\xbc\x27\x78\x2b\x1b\x30\x28\xa4\xde\x9a\x0e\x87\xdb\xab\x78\x79\x14\x4e\x40\xa8\x11\xf0\xb1\xb2\x88\x0d\x26\x82\x3c\x99\x0a\xde\xb7\xdf\x41\x11\x6f\xcf\x60\x22\xa0\x8d\x87\xac\x7c\x63\xec\xdf\xf7\x96\xda\xfa\x08\x2e\x5c\xd8\x5d\x6c\x3f\x17\xf8\x74\x0e\xa1\xe9\xa0\xc8\x86\xe0\xcd\x70\x74\xc4\x5d\xbc\x2d\xc7\xb3\x4c\x68\x59\xe0\x6a\x0c\xee\x9b\x20\xce\x43\x72\x4a\x41\x4e\xb7\x7b\x0b\x80\x4d\xff\xcc\x7b\xc4\x4d\xab\x7f\xa0\x2a\x38\x36\xea\xe3\x96\xf9\xed\xe4\x8d\x6d\xee\xa3\x33\xb0\xa9\x90\xeb\xbc\xd1\xb3\x36\xbb\x73\xd8\xe7\x2c\x72\xe1\x24\x49\xf1\xca\x72\x0a\x3b\xcd\x97\x88\xd1\xdc\xdd\xe5\x12\x14\xb7\x71\xa1\xca\x13\x89\xeb\xb5\xa0\x56\x45\xac\xf9\x73\x15\x65\x1a\xe8\x86\xec\xd5\xf0\x09\xa7\xcc\x62\xbf\xc4\x94\x59\xb7\x1f\xea\x3f\x8a\xdc\x05\xd3\x71\x29\x78\x1a\xc9\x07\x3e\xb8\x3f\x1e\xeb\x1f\xc8\x4a\x90\xc8\x31\x6c\x36\x16\x42\x59\xa7\xc2\x4e\x5a\x20\x0c\x35\x3e\xbd\x7b\xf2\x32\x4e\xff\x52\x16\x80\xb2\x18\xa8\x65\x4b\x6d\xf7\xb0\x46\xaf\xdc\x85\xa7\x8c\xfe\xe1\x74\xa6\xe9\x19\x78\xd4\xaf\x65\x11\xd3\x07\x99\x19\x5d\xf4\x28\x86\xc8\x32\x7d\xcc\x62\x4c\x29\x12\xf8\x3f\xe1\xbb\x63\x02\xec\x71\xa8\xf0\x98\xd5\xe0\x56\xd8\x95\x95\xc4\x60\x06\x2d\x29\xa5\x54\x6e\x5b\xa7\x7e\x0a\x17\x9a\x84\x8f\x03\x3e\x11\xaf\xc1\xa1\x98\x97\xe8\x3c\x2a\xb7\xeb\x58\x20\x72\x22\x15\x67\x67\xeb\xdb\x2e\x24\x26\xae\x2c\x59\x4c\x20\x5d\xa5\x96\x50\x28\x3b\x33\xcb\xf5\x0a\x77\xd6\x07\xde\x9e\x2f\xfe\x0f\x08\x0f\xd7\x73\xc7\xe0\x3f\x20\x50\x5d\xd0\xcb\x15\xcd\x89\x24\xcd\xd6\xb8\x7d\x7f\x61\x5b\xcc\xd2\xeb\x47\x83\x95\x61\xd7\x9a\x02\xca\x9c\xde\x0f\xde\x19\xb5\xa0\xc2\xa9\x0b\xd4\xa0\xc7\x36\x1b\xfd\xad\x53\x74\xac\x42\xb5\x16\x11\x15\x75\x9c\xfa\x2a\xc0\x8c\x16\x79\x5a\xb5\x2c\x84\xc5\x40\x71\x0b\x1d\x1d\x50\x06\xf2\xab\xa0\x98\xc6\xb6\x82\xa5\x1f\x03\xff\x5d\x79\xb6\xbc\xe0\x20\xce\x72\x6f\x7f\xa2\xe7\x68\x51\x38\x08\x7d\x60\x9c\x05\x05\x4a\x9f\x4c\x45\x68\x15\x2e\x89\x00\xd8\x66\xbd\x4a\x98\x0b\x07\xd3\x5b\x83\x36\x47\xd1\xf4\xe2\x65\x75\xd4\xde\x1c\x7a\x7c\xcf\x5c\xd1\x19\xd6\xdb\x4c\x72\xfb\x9c\x24\xe3\xa0\x85\xec\xdd\xe5\x21\xff\x18\xbe\xc6\xc1\x6c\x93\x14\x57\xcd\x8e\x26\x46\x1d\x48\xb5\x5c\x21\x1a\x27\xba\x49\x86\x63\xb3\x4e\xa0\xdc\xfd\x8c\xdf\xa1\x29\x00\xfe\x83\x67\xab\xbe\xac\x8e\x4e\xb1\xa1\x80\x36\xc9\xc1\x69\x49\x35\xa5\x73\xb6\x1a\xfc\x05\xc1\x26\x5a\xaf\xb6\xef\x58\x4e\x82\x3b\x84\x27\x64\xb7\x1d\xca\x33\x18\x37\x64\x9a\x51\xd0\xc9\x6c\xef\xec\x43\x58\x35\xb8\xf4\xb5\xda\xc5\xd1\xf2\x4b\xe9\x4d\x53\x78\xa1\x66\x4e\xfc\x1d\xaf\x55\x70\x15\x65\x7a\xdb\x77\x88\x1c\x5d\x18\x1c\xd9\xd1\xf1\xd3\xd9\x6b\xf7\x4d\x51\x67\x93\x02\x85\xb6\xf9\x8f\xef\x31\xbb\xef\x73\x78\xcf\x2f\x12\xc4\xc4\x79\xf9\x60\x76\xd8\x17\x0d\x76\x8d\xfd\x2f\xe8\x23\xcd\x14\xd6\xd7\x05\x9d\x75\xd9\x54\x7a\xb2\x2a\xda\x6f\xd1\xa3\x64\xae\x76\x29\xe6\xf7\xe4\x66\xa4\xc8\xa4\x94\x83\xe4\x55\x5f\x6c\x08\x81\xfd\x2c\xee\x97\x92\x32\x47\xf2\xca\x83\x9f\x88\xb1\xed\xa7\xc3\xb7\xc7\x5f\x53\x0c\x0f\xd6\x0b\x85\xe8\xb1\x0d\x4b\x58\xd7\xb8\x81\x5b\xbf\x1e\x4f\x42\xa1\x6b\x25\x22\x58\x88\xbd\xa2\x47\xd4\x6b\xe3\x55\x13\x25\xb6\x06\xf6\x1c\xe7\x76\xa9\x2f\x04\x68\x84\xfd\x27\x5e\x82\xd4\xc0\x87\x61\xb6\x0d\x69\x8c\x5a\xdd\xe7\x8d\xed\x62\xd8\x83\x5a\x1b\x23\xb3\xff\x96\x57\x6b\x2c\x19\x8f\x72\x2e\x76\xea\x22\x66\x73\x88\xa4\x4e\xd3\x16\xea\x6d\xc5\xbe\x4b\xd8\x40\x43\x57\x2a\x2a\xfa\x19\xcd\x9a\x84\xef\x5f\xfc\x28\xfb\x0f\x68\x9c\x4c\x25\x26\xce\xc2\x61\x50\x2f\x1e\x0a\xf6\x65\xcb\xde\xf5\x0e\x3a\x66\x9c\x0a\xa1\x36\x43\x07\xc8\x9d\x76\x6d\x58\x69\xe2\xc9\xe4\x14\xca\x21\x67\x35\xc0\x18\x26\xee\xe4\xea\x8b\xcb\x09\xb6\x7a\x8d\xd8\xf7\xed\xb6\x85\x36\xc6\xee\xfa\x0f\xa0\xd7\x8f\x4a\x86\xbd\x70\x48\x2d\x98\x52\xe4\x82\x91\xd1\xe1\x6a\xd1\x14\x34\x77\x9a\x27\x86\x1a\xf8\x19\x2a\x64\x27\x50\x84\xe7\xd9\xe0\x60\x4c\x52\x07\x3c\x33\x24\xb9\x57\x7b\x08\x80\x73\xab\x27\x00\x41\xd0\x41\xcf\x5f\xf1\x88\x31\xb8\x0e\x00\xa2\x73\xb6\x86\x00\x59\xbe\xc4\xa6\xc4\x19\x02\x64\x4e\xf9\x23\xe8\x90\xd5\x58\xb5\xa9\x6e\xf9\xee\xfe\x19\xde\x12\x07\x35\xe9\x89\x87\xa9\x8d\x53\xa5\x6e\x32\x26\xc5\x76\xcd\x2e\xf4\x86\xae\x13\x8f\xf3\xb6\x2e\xae\x33\xca\x91\xf8\xb7\x7d\x3a\x98\xf5\x83\xe8\x63\xd4\xeb\xe5\x3d\x0b\x3f\xa9\x7c\x47\x68\x28\x05\x93\xf9\x35\xf6\x14\x25\x95\xed\x15\x05\x7a\xdf\x8b\x60\x14\x86\x20\x49\x3a\xfe\xb5\xff\x5d\xe1\x7b\x6a\xc2\x6d\x5b\xbb\x7c\xf7\xf4\x71\x32\x64\x2e\xbe\x73\xde\x00\x51\xf0\x73\x61\x0b\x0c\x1e\xae\xf6\x74\x99\x19\xcf\x0e\x87\x14\x4c\x0d\x8f\x70\xee\xab\xb7\xfe\x6c\x2e\x58\xf9\x14\xe5\x44\xe8\xbe\x21\xc2\xf3\xa6\x02\xd6\x1c\xfc\xf0\x17\x65\xe4\x9c\xbc\xd0\xa6\xf9\xb1\x61\x6e\xc5\x6a\x4d\xe6\xe5\x2b\xc9\x79\x84\x0a\x84\x2d\x9b\x2d\xd4\xb5\xd5\x9d\x15\xb3\xce\x85\x13\x8b\xc9\x8c\x1e\x25\x4c\x84\x85\x3b\x67\x26\xb6\xfd\xb7\xbc\x79\xe9\x0d\x34\xbe\x3d\xd8\x6c\x4d\xef\xbf\xac\x94\x38\x80\x29\x2f\xec\x0d\x99\x5c\xdb\x52\x44\x51\x4d\x11\x51\x8e\xfe\x79\x20\x4d\x53\xc9\xcd\xa4\xa4\x87\xbf\x30\xe9\xff\x7f\x28\x6e\x53\x6a\xc1\xfe\x9f\xa1\xa7\x1f\x3e\xed\x0e\x47\xf8\x47\x1e\x88\xdb\x19\xfc\xd3\xe3\x19\x76\x98\x96\x97\x98\xf2\x6d\x5c\x9c\x4b\x8a\x7b\x93\x5a\x0f\xaf\x39\x5d\x2b\xa9\xee\x8c\x57\xe1\x37\x47\xad\x4d\x01\xa2\xee\xca\x7e\x85\x3f\x9c\x52\x73\xfc\x16\x18\x54\xc2\xe9\x66\xf8\x53\xa4\x88\x88\x44\x44\x22\x91\xed\x0b\x3c\x59\x31\x5f\x8c\xba\xe2\xc9\xa4\xaf\x08\x4d\x10\xcb\x4c\x7e\x64\x00\x01\xb7\xf3\x40\x13\x2d\x80\x47\x4c\x6d\xaa\x0e\x00\x9c\x38\x0d\xf0\xfe\xb5\x7d\x5e\xb1\xed\x8b\x40\xcd\xf2\x44\x6c\x8a\x42\x4d\x48\xeb\xe5\x89\x7d\x92\x2e\x42\xf2\x5b\x98\x83\x63\x95\xdb\x51\x3e\x49\x04\xfc\x25\x21\xac\xca\x53\x03\xac\x57\x64\x54\xe6\x02\xd4\xb3\x55\x20\x73\x68\x18\xa8\x46\x83\x79\x00\x0f\x8f\x30\xf9\xe3\x7d\x05\xc7\xbc\x1f\x16\xec\xc9\xac\xb0\xf8\xc6\x30\x96\x67\x75\x57\x5a\x40\x64\xa7\x70\xf7\xb5\x3f\x7c\xa7\xcc\xc0\x0b\xdb\x71\x19\x5d\x53\xcf\x21\xb7\x48\x20\x66\x52\x20\xc0\x57\x85\xb2\x25\xb2\xcb\xe2\x85\x5a\x5a\xe4\x0b\x9b\xce\x9e\x1e\xdd\xb7\x8a\x9e\x4c\x08\x25\xfb\x47\xff\xf9\xe6\xf3\x7a\x95\x54\xd9\xee\x04\x6c\xd1\x8a\x30\x1d\xae\xe2\x6e\xc5\xee\xf4\xf1\x01\x25\x6e\x0c\x59\xdf\x35\xcb\xb5\x19\x2f\x80\x16\x2b\xa3\x93\x7d\xbf\x36\x19\x98\x7b\xf1\x8b\x1d\x69\xd6\xe6\xe0\xc4\x2f\xea\xd7\xf0\xed\x6d\x2c\xf5\x4d\xa7\x8f\x87\x49\x60\xe4\x45\xa1\x08\xb7\xbb\x09\x87\xcb\x94\x27\xe1\x02\x3a\x1c\x85\xc2\x72\xc1\x0b\xca\x78\x1f\x98\xc7\x6e\x10\x67\x39\x24\xe6\x58\xe7\x36\xcc\x54\x4a\xfc\x0c\xde\xcd\xe8\xe5\x8d\x14\xa1\x8e\x4b\x74\x21\x50\x75\x1a\x46\xa1\x4d\x90\xd7\x10\xa9\xea\x82\x26\x6e\x46\x65\x4b\xbc\x15\x36\x85\xc1\x95\x99\x8b\x09\x23\xcc\xe3\x13\x50\xb7\x9b\x20\x39\xf2\x38\x55\xdc\x3b\xa1\x14\x38\xb1\x5c\xc0\x3a\xaa\xd9\xd3\x1b\x58\x19\xc4\xb4\x12\x34\xe9\x3a\x30\x61\x55\x47\x9a\x6b\xd4\x5d\xf8\x4e\x1c\xf9\xe8\xd8\xea\x0e\x89\x6d\x92\x88\xd2\xe4\x8d\x87\x30\xd8\x6b\xf8\x99\x7c\x62\xa8\x37\x8a\xd9\x59\x25\x67\x2d\xef\xba\xa1\xc9\xcb\xa3\x15\xce\x1e\x64\xf8\x61\x6b\x17\x4b\x88\xc5\x7a\xb7\x80\x74\x8a\xe9\x6c\xdb\xe3\x6d\xc4\xd7\x90\x54\xfd\xd7\xbe\xc3\xb4\x0b\x1f\xc7\xb1\x26\x6e\x19\x7c\xa7\xfe\x41\xd0\x74\x3a\xd9\xa8\xa1\x04\x30\xa4\xe1\xcc\xed\xf8\xaa\x48\x62\x3f\xff\xa2\xbf\xd3\x30\x36\x4b\x0e\x3a\xa1\xdb\x7d\x9b\x9a\xa4\xca\x8e\x17\xd9\x3c\x91\x6d\x6a\xfe\x57\xd3\x3f\x7b\x05\x9b\x67\x0b\xba\x34\xbc\xee\xd5\x11\x65\xff\xc0\xdc\xa6\xaf\x53\x2e\xb3\xef\x97\x6b\x29\x6e\x97\x5c\xe2\x5b\x40\xec\x63\x9c\xa4\x35\x93\xb2\x59\x46\xba\x82\xa8\x19\xe8\xf1\xaf\xa7\xdf\xa3\x45\xf3\x5c\xc0\x8b\xf3\xe7\x73\x02\x88\x6c\xaf\x08\xe1\x43\x24\x45\xf6\x7d\xc5\x9c\x69\x85\xe7\xf8\xc9\xbb\xc8\xa6\x8a\x39\x25\xe2\x0c\x14\xbd\xd2\xb6\x92\x2b\xc9\x24\x32\x1f\x58\x23\xdf\x51\x18\x34\xf2\xa2\x9e\x4d\x7e\x32\x0f\x96\x3c\x7a\xd3\xa1\x52\x22\xaf\xa2\x2a\x98\x37\x51\x47\xfb\x3f\x43\x33\xf5\xb8\xc1\x39\xa1\x04\x5d\x3c\xc6\xde\x57\xb2\x4a\x23\x41\xcc\x16\xb3\xdf\xe0\x69\xa3\x58\x65\xb8\x52\xc2\xf8\x4f\xd4\xec\x28\xec\x17\x8f\xd0\xb9\xff\x32\xe1\xe5\x29\xbf\x3d\xc9\x69\xae\x17\xdb\x13\x96\xc2\xcb\xa7\x4b\x6a\xd4\xb8\x32\x07\xea\xb4\xb1\x2c\x93\x60\x4d\xa7\xeb\xbd\x03\x9b\xae\x1e\xa1\xcb\xf5\xc9\x79\x87\x0e\x8e\x87\xae\xc0\xc8\x83\xe8\xb9\x52\xbe\xc1\x98\x67\x60\x40\x3b\x19\x3e\x16\x5f\xff\x20\xff\x51\x60\xa4\x34\xbd\x25\xa7\xcb\xec\xc4\xf8\xb9\xb7\xa5\x5b\x41\x29\x6f\x96\x09\x34\x2b\x8a\x76\xaf\xb6\xab\x98\x91\xbd\x17\x42\x70\x8a\x99\xf3\x4a\x56\xef\xc1\x39\x20\x0f\x1b\x5f\xe1\x57\xbb\x27\x62\x40\xe7\xe2\xa0\xa0\xf4\xea\x59\x1a\xc0\xb2\x4a\x21\xcc\xd1\xcc\x4e\xf6\xc8\xba\xa0\x82\xde\xa2\x3f\xe5\x49\x90\x1e\xcb\xe7\x8c\x47\x4b\x27\x54\x33\x49\x05\x9f\x91\x15\xa5\x91\x39\xe4\x5e\xe6\xf9\xff\x40\x52\x38\x54\x22\xc9\x38\x61\x59\x4f\xe9\x89\xfa\x84\xd2\x82\x1d\x63\xea\x55\xd9\x32\x7d\x70\x19\xe9\x12\xf7\xeb\xae\xbf\x24\xbf\x21\x16\xcc\xc1\xa6\xa2\x83\xc3\x97\xba\x3c\xaa\x5e\xa8\xd4\x4a\xc7\x36\x78\x3f\xb4\xef\x27\x15\x95\x70\xae\xf5\x11\x56\xe9\x0e\x69\x4f\xaa\x6d\x1a\x9e\x19\x21\xd8\xd1\xb1\x87\xc3\xea\x36\x7f\x33\x08\xcf\xe1\xb7\x41\x2a\x55\x8b\xf3\xce\x7f\xfe\xf3\x0f\x89\x27\xe4\x96\x12\x6e\x3e\xfe\x17\x1f\x4b\xee\xf7\x1b\xae\x80\xd3\x63\xf5\xb7\x3a\xa8\xf7\xa9\x12\x82\x42\x6c\xa3\xc7\xf0\x88\xe4\x25\x56\xc5\x65\x45\xbd\x0d\xe1\x96\x96\xd7\xb6\x07\x37\x65\x80\x08\xfd\x63\xc2\x3f\xef\xdc\xf5\x5a\x33\x58\x46\xb1\xa1\xda\xba\x80\x40\x4b\x4f\xc4\x87\xd1\x9f\x32\xe3\xad\x86\x81\x39\x0f\x2c\x57\xa2\x09\x74\x24\x4f\xd1\x12\xdd\x0c\x88\x30\xe4\x11\x60\xd5\xd7\x40\x59\x95\x13\xae\x0c\x03\xa9\x08\xa0\x08\xeb\x41\x19\x68\xd5\x3f\x5b\x9c\x1d\x8d\xd4\xf3\xf0\x36\x55\x92\xe6\x26\xf4\xf2\x01\x68\x52\x1a\x58\x73\x97\x67\xb1\x8c\xf2\x40\x0c\xa6\xf6\x97\xcc\xea\x44\x63\xaa\x90\x38\x90\x92\xf3\x5e\xca\x8a\x4b\x1b\x7c\x5d\xa0\x42\x83\xa6\x7b\x0f\xb1\x3f\x36\x04\x73\x76\xbf\x35\x91\xae\xbd\x37\xab\xf5\x08\xb3\x66\xf5\xb6\xf5\x44\x2f\x41\xc0\x57\x2f\xc8\xea\x15\xb5\xd9\x2c\xc3\x47\x9d\x01\x8e\x57\xd7\x2d\xbc\x1b\x03\x71\x0d\xae\x0a\x3e\x27\xf9\x2a\x6d\x96\xf0\x19\x2b\x7d\x63\xaf\x28\x27\xe6\x93\x92\x6c\x08\xf1\x30\x39\xe8\xf8\xc9\xec\x97\xd5\xff\xb3\x4e\x5e\xc2\x5f\x17\x55\x96\x4d\xf0\x48\xd2\x2f\x48\xee\xd1\x75\x6b\xf1\x66\x0c\x61\x9f\xb1\xa0\x36\x90\x1f\xd9\xad\x59\x04\xee\x35\x4e\x90\x17\x4b\x12\xee\x8d\x44\x99\xe1\x8f\x69\x9f\x6f\x8b\xdc\xfa\x19\x59\xb5\xad\xdb\xa3\xf4\x0e\xeb\xc7\x27\x59\x4c\x7d\x26\x7f\x5f\x12\x3e\xd2\x5d\xb5\x0e\xb9\x82\x88\xc2\xd5\x14\x16\xa1\x20\x59\x7f\x4e\xc0\xeb\xaa\x08\xa9\xf1\xaf\xa7\xa9\x2d\x63\xde\x95\x41\xd1\xd1\x13\xc8\xd6\x45\xbf\x02\x79\xdb\x6e\x7e\x1d\x0a\xe7\x1b\x78\x5e\x47\xe1\x40\x63\xec\xfb\x14\x86\x04\xd4\xb9\xe2\xba\x9a\xc9\x07\x44\xb6\xbf\xaa\xb6\x37\xe3\xe1\x5d\x4e\xea\x24\xcb\x4e\x9c\x76\xd8\xef\xa7\x50\xa7\xbe\x5c\x52\x41\xa4\x6c\x59\x6f\xd3\x96\x88\xb0\xdd\x52\xe5\x40\x64\x1c\x3f\x98\xd7\x09\x5c\x63\x47\xdd\xeb\xd3\x1c\xce\x61\x93\x80\x46\x07\xd3\x4f\xf8\x2f\x3e\x0d\xcc\xc9\x81\xa6\x8e\x0d\x69\x0a\x8b\x80\x6f\xf7\x57\xbb\x11", 4096); syscall(SYS_ioctl, (intptr_t)r[2], 0xc0f24413, 0x100005c0); break; case 10: *(uint8_t*)0x10000000 = 0; *(uint8_t*)0x10000001 = 0; *(uint8_t*)0x10000002 = 0; *(uint8_t*)0x10000003 = 0; *(uint8_t*)0x10000004 = 0; *(uint8_t*)0x10000005 = 0; *(uint8_t*)0x10000006 = -1; *(uint8_t*)0x10000007 = -1; *(uint8_t*)0x10000008 = -1; *(uint8_t*)0x10000009 = -1; *(uint8_t*)0x1000000a = -1; *(uint8_t*)0x1000000b = -1; *(uint16_t*)0x1000000c = htobe16(0x8100); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 1, 0, 3); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 1, 3, 1); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 4, 4, 12); *(uint16_t*)0x10000010 = htobe16(0x806); *(uint16_t*)0x10000012 = htobe16(1); *(uint16_t*)0x10000014 = htobe16(0x800); *(uint8_t*)0x10000016 = 6; *(uint8_t*)0x10000017 = 4; *(uint16_t*)0x10000018 = htobe16(9); *(uint8_t*)0x1000001a = 0xaa; *(uint8_t*)0x1000001b = 0xaa; *(uint8_t*)0x1000001c = 0xaa; *(uint8_t*)0x1000001d = 0xaa; *(uint8_t*)0x1000001e = 0xaa; *(uint8_t*)0x1000001f = 0xbb; *(uint32_t*)0x10000020 = htobe32(0xe0000001); *(uint8_t*)0x10000024 = 0xaa; *(uint8_t*)0x10000025 = 0xaa; *(uint8_t*)0x10000026 = 0xaa; *(uint8_t*)0x10000027 = 0xaa; *(uint8_t*)0x10000028 = 0xaa; *(uint8_t*)0x10000029 = 0xbb; *(uint32_t*)0x1000002a = htobe32(-1); break; case 11: memcpy((void*)0x10000040, "\x0f\x5a\x60\xb0\x06\xc4\xe1\x01\x6b\xd7\x65\x2f\xc4\xe1\xf8\x11\x81\x00\x00\x00\x80\xc4\xc1\x19\x60\x18\x3e\x67\x3e\x0f\x01\xd9\xf2\xe1\xab\xf3\xee\x66\x0f\x14\x8b\xf1\xff\xff\xff", 45); syz_execute_func(0x10000040); break; case 12: break; } } int main(void) { syscall(SYS_mmap, 0x10000000, 0x1000000, 7, 0x1012, -1, 0); use_temporary_dir(); do_sandbox_none(); return 0; } :358:11: error: use of undeclared identifier 'SYS_freebsd12_closefrom' syscall(SYS_freebsd12_closefrom, (intptr_t)r[1]); ^ 1 error generated. compiler invocation: clang [-o /tmp/syz-executor542219695 -DGOOS_freebsd=1 -DGOARCH_386=1 -DHOSTGOOS_freebsd=1 -x c - -m32 -O2 -pthread -Wall -Werror -Wparentheses -Wunused-const-variable -Wframe-larger-than=16384 -static -lc++ -Wno-overflow] --- FAIL: TestGenerate/freebsd/386/14 (0.97s) csource_test.go:108: opts: {Threaded:true Collide:false Repeat:true RepeatTimes:0 Procs:0 Slowdown:1 Sandbox:none Fault:false FaultCall:0 FaultNth:0 Leak:false NetInjection:false NetDevices:false NetReset:false Cgroups:false BinfmtMisc:false CloseFDs:false KCSAN:false DevlinkPCI:false USB:false VhciInjection:false Wifi:false IEEE802154:false Sysctl:false UseTmpDir:true HandleSegv:false Repro:false Trace:true} program: getsockopt$inet6_sctp_SCTP_EVENT(0xffffffffffffff9c, 0x84, 0x1e, &(0x7f0000000000)={0x0, 0x4, 0x1}, &(0x7f0000000040)=0x8) getsockopt$inet6_sctp_SCTP_MAX_BURST(0xffffffffffffffff, 0x84, 0x19, &(0x7f0000000080)={0x0, 0x7fff}, &(0x7f00000000c0)=0x8) r0 = dup(0xffffffffffffffff) setsockopt$inet6_sctp_SCTP_ADAPTATION_LAYER(r0, 0x84, 0x8, &(0x7f0000000100)={0x7}, 0x4) readv(r0, &(0x7f0000000540)=[{&(0x7f0000000140)=""/149, 0x95}, {&(0x7f0000000200)=""/179, 0xb3}, {&(0x7f00000002c0)=""/172, 0xac}, {&(0x7f0000000380)=""/182, 0xb6}, {&(0x7f0000000440)=""/206, 0xce}], 0x5) thr_wake(0xffffffffffffffff) r1 = socket$inet_udplite(0x2, 0x2, 0x88) freebsd12_closefrom(r1) r2 = open(&(0x7f0000000580)='./file0\x00', 0x4, 0x40) ioctl$DIOCGETSTATE(r2, 0xc0f24413, &(0x7f00000005c0)="2a368a90b488d04ee1eccd139778043b00a6f81a3627b593b0dfce33265cda8fba8b0fa538b3e364ad1d1f7de1011c63f592a64dd0ec953f9c050f991f42d24d7bc47c4d5bf323e393605e59a1eb5bc4e948f83890911ed35b53a2b0d63db79dc21d6190f8b434d6ff85e54fb9a28a7566d1a24337e72e82acc9e518339acac7dd8960a1c9c5cb3da9e6bc0b697e9dbbc60fa8b72c3719286bf44c2e8fc8356e9125eae9bed216f349c292c989d7dcd252dfb79c4fdbdc865109f1e3cf9cd67cfa8babb7d3627ce0080910c5755c92cbb2c159172a65ea8a2085f4ce10e1436ef2f7d6f1db702a387cd35681293331bd1bdbd690274a7c372f84e4d5748791d707ee5c127eda8b84596b0c10890c881006beb38ad56d139d8c74f14f3598de551ee3a13466e67cb3d2c5fd909061522058ffbe9ae431325544c894b9841a4c253632a332c6e0d881645f90b6337db99b7fad1bd162f73d11ce5e57d5f321fb68a795c990662a35706af845b5383fe50ba8637613dd43aa7cf20020355218e060af2658866349197f30c835351bd69683baaab8be6b4da04fb35a423314fab610b8d1cf0440fedb28a5e19584ef7867bd962ba4ede513af03dda669f76c67d28fb507d5762c61d528f1cf3a7c563eee1c04106254ce3fd821c17a0defc37d79a5de7ef9352c7b411c953958d254d0d3e5ae618a68a53e45809d493c474a208ccc0f170df4836d0593b7b7ce874fa01fe0415a594f941c31f0784aad394f06b8537029555ccc73eaab0b36846fe5cc6e92db0c90a62d1d36c382c351921789dfbe0f60b13db0814aaf4fa6f813a7cf2ad12ebe1050eef92768c313718d8db202e3d1093dcf5933451efd9b72ee4ef75dfc0ea0afffb81bbee550382b6b1212cea097b709aec7c0a85799127d01376f7bd6f255732972f889b6843f615478ee23124737f813b18f3133af12b4e41e70bea058b00a5f965ed2377b48916bc2a7162adbf7bc9ca11aeaaf88c2f5229af6dd3861574a0d5d5ae482f2d7e86d172005cca565b12b199a7d81087d85776d613940b48735266d45a4ad11e168e89b893e650b984b483abb318f432f13c61f26f3deabc6b45dcf5ff4579da89a9d23251d1a6bec122cb210fc3afa89102395e1d26b14ca4180c1b6fe0b3000049550283b618ab1fd6b165855b297d9457ac54946fb99e6f0d8872db87934347b6d9a38a731bf8bd08f2a7a7d80d4cf24fa9a16c209a18494133d6dd0d292efeba7872c4d7bdfafd416e634cf90ab4dc9bccc643227a05552eee0f916ec202dcb011c8394b10996873a0a4b7aee1514f595d23289a3bf62085b0aeea0009206e7a7061ad866352241708acbcf3c2fc0fdcaaaa8b3be8e510b99e04b96ddafa9f8483b7a568c5ebaddad5677d9144a270d0444aea3c0775d241d79baea30dc4bb19a712471f112838c7525496d4a8fa66658610347d490af85305ceabf0f35ac277f2ef1b6a8e5813ce0bea587e627d725f1db1241222acd41e16c8a32bdb40778d4a10f87b1e90e006dfc03d2934589d25965240ee9c21419a2aa5bd8f3fcd3208f9b52155513a6da73468dc0703102bcca0eba18e88c19da64ab5c6bf6cb8109730153693332f7e160862719dc08175ed074f5bf2887705501331cf75254fce0e145ac2241875293036f2aa96592194073d04754c26f19e7763332b43d0287a28347d5155bacfd32628f500d9e9c04f5369f6317e606e422f98c48b11f755b2b0fdc79494a769700d35a88a330f02cab2fb7b65049e2d1e350a6e02d5d54ac7c85f268c0eaf77071d5acabed99429030d00b30c4caa21ce322d4f780e892201129ff772d22cc4d4c274b479948d22acfc1760b2917ff308e9a3aa22779bd0f453d11e0dee788dcf95b7be90c3b3b3a7fe535da503c381e346eb2a0b0e375ad726ee2a38919810d5c545edcea1b23109a3fb68e30c01cc704a9d23ae55d18cc9fdff02bd484d59f468d75a796657fdca59f55d4be7efd7378a31685334adc0cacaef9af5649da85dc6c5989cf8e2b9977a62a8ca8bc27782b1b3028a4de9a0e87dbab7879144e40a811f0b1b2880d26823c990adeb7df41116fcf6022a08d87ac7c63ecdff796dafa082e5cd85d6c3f17f8740ea1e9a0c886e0cd7074c45dbc2dc7b34c6859e06a0cee9b20ce43724a414eb77b0b804dffcc7bc44dab7fa02a3836eae396f9ede48d6deea333b0a990ebbcd1b336bb73d8e72c72e12449f1ca720a3bcd9788d1dcdde51214b771a1ca1389ebb5a05645acf97315651ae886ecd5f009a7cc62bfc49459b71fea3f8adc05d37129781ac9073eb83f1eeb1fc84a90c8316c36164259a7c24e5a200c353ebd7bf2324eff521680b218a8654b6df7b046afdc85a78cfee174a6e91978d4af6511d30799195df42886c8327dcc624c2912f83fe1bb6302ec71a8f098d5e056d89595c460062d29a5546e5ba77e0a179a848f033e11afc1a19897e83c2ab7eb58207222156767ebdb2e2426ae2c594c205da59650283b33cbf50a77d607de9e2ffe0f080fd773c7e03f20505dd0cb15cd8924cdd6b87d7f615bccd2eb47839561d79a02ca9cde0fde19b5a0c2a90bd4a0c7361bfdad5374ac42b5161115759cfa2ac08c16795ab52c84c540710b1d1d5006f2aba098c6b682a51f03ff5d79b6bce020ce726f7fa2e7685138087d609c05054a9f4c4568152e8900d866bd4a980b07d35b833647d1f4e26575d4de1c7a7ccf5cd119d6db4c72fb9c24e3a085ecdde521ff18bec6c16c931457cd8e26461d48b55c211a27ba498663b34ea0dcfd8cdfa12900fe8367abbeac8e4eb1a18036c9c1694935a573b61afc05c1265aafb6ef584e823b842764b71dca331837649a51d0c96cefec435835b8f4b5dac5d1f24be94d5378a1664efc1daf557015657adb77881c5d181cd9d1f1d3d96bf74d5167930285b6f98fef31bbef7378cf2f12c4c479f96076d8170d768dfd2fe823cd14d6d7059d75d9547ab22ada6fd1a364ae7629e6f7e466a4c8a49483e4555f6c0881fd2cee97923247f2ca839f88b1eda7c3b7c75f530c0fd60b85e8b10d4b58d7b8815bbf1e4f42a16b25225888bda247d46be3551325b606f61ce776a92f046884fd275e82d4c08761b60d698c5adde78ded62d8835a1b23b3ff96576b2c198f722e76ea22667388a44ed316ea6dc5be4bd84043572a2afa19cd9a84ef5ffc28fb0f689c4c2526cec261502f1e0af665cbdef50e3a669c0aa1364307c89d766d5869e2c9e414ca216735c01826eee4ea8bcb09b67a8dd8f7edb68536c6eefa0fa0d78f4a86bd70482d9852e48291d1e16ad11434779a27861af8192a64275084e7d9e0604c52073c3324b9577b088073ab270041d041cf5ff18831b80e00a273b6860059bec4a6c41902644ef923e890d558b5a96ef9eefe19de120735e98987a98d53a56e3226c576cd2ef486ae138ff3b62eae33ca91f8b77d3a98f583e863d4ebe53d0b3fa97c4768280593f935f6142595ed15057adf8b60148620493afeb5ff5de17b6ac26d5bbb7cf7f47132642ebe73de0051f073610b0c1eaef6749919cf0e87144c0d8f70eeabb7fe6c2e58f914e544e8be21c2f3a602d61cfcf01765e49cbcd0a6f9b1616ec56a4de6e52bc979840a842d9b2dd4b5d59d15b3ce85138bc98c1e254c84853b6726b6fdb7bc79e90d34be3dd86c4defbfac943880292fec0d995cdb5244514d11518efe79204d53c9cda4a487bf30e9ff7f286e536ac1fe9fa1a71f3eed0e47f8471e88db19fcd3e3197698969798f26d5c9c4b8a7b935a0faf395d2ba9ee8c57e13747ad4d01a2eeca7e853f9c5273fc161854c2e966f853a4888844442291ed0b3c59315f8cbae2c9a4af084d10cb4c7e640001b7f340132d80474c6daa0e009c380df0feb57d5eb1ed8b40cdf2446c8a424d48ebe5897d922e42f25b98836395db513e4904fc2521acca5303ac576454e602d4b35520736818a8468379000f8f30f9e37d05c7bc1f16ecc9acb0f8c630966775575a4064a770f7b53f7ca7ccc00bdb71195d53cf21b74820665220c05785b225b2cbe2855a5ae40b9bce9e1eddb78a9e4c0825fb47fff9e6f37a9554d9ee046cd18a301daee26ec5eef4f101256e0c59df35cbb5192f80162ba3937dbf3619987bf18b1d69d6e6e0c42fead7f0ed6d2cf54da78f874960e445a108b7bb0987cb9427e1023a1c85c272c10bca781f98c76e10673924e658e736cc544afc0cdecde8e58d14a18e4b742150751a46a14d90d710a9ea82266e46654bbc153685c195998b0923cce31350b79b2039f23855dc3ba11438b15cc03aaad9d31b5819c4b41234e93a306155479a6bd45df84e1cf9e8d8ea0e896d9288d2e48d8730d86bf8997c62a8378ad95925672defbaa1c9cba315ce1e64f8616b174b88c57ab780748ae96cdbe36dc4d79054fdd7bec3b40b1fc7b1266e197ca7fe41d0743ad9a8a10430a4e1ccedf8aa48623fffa2bfd330364b0e3aa1db7d9b9aa4ca8e17d93c916d6afe57d33f7b059b670bba34bceed51165ffc0dca6af532eb3ef976b296e975ce25b40ec639ca43593b25946ba82a819e8f1afa7dfa345f35cc08bf3e77302886caf08e1432445f67dc59c6985e7f8c9bbc8a68a3925e20c14bdd2b6922bc924321f5823df511834f2a29e4d7e320f963c7ad3a15222afa22a98375147fb3f4333f5b8c139a1045d3cc6de57b24a2341cc16b3dfe069a35865b852c2f84fd4ec28ec178fd0b9ff32e1e529bf3dc969ae17db1396c2cba74b6ad4b83207eab4b12c93604da7ebbd039bae1ea1cbf5c979870e8e87aec0c883e8b952bec1986760403b193e165fff20ff5160a434bd25a7cbecc4f8b9b7a55b41296f9609342b8a76afb6ab9891bd1742708a99f34a56efc139200f1b5fe157bb276240e7e2a0a0f4ea591ac0b24a21ccd1cc4ef6c8baa082dea23fe549901ecbe78c474b27543349059f9115a59139e45ee6f9ff4052385422c93861594fe989fa84d2821d63ea55d9327d7019e912f7ebaebf24bf2116ccc1a6a283c397ba3caa5ea8d44ac736783fb4ef27159570aef51156e90e694faa6d1a9e1921d8d1b187c3ea367f3308cfe1b7412a558bf3ce7ffef30f8927e496126e3efe171f4beef71bae80d363f5b73aa8f7a91282426ca3c7f088e42556c56545bd0de19696d7b60737658008fd63c23fefdcf55a335846b1a1daba80404b4fc487d19f32e3ad8681390f2c57a20974244fd112dd0c8830e41160d5d740599513ae0c03a908a008eb411968d53f5b9c1d8dd4f3f0365592e626f4f20168521a58739767b18cf2400ca6f697ccea4463aa90389092f35eca8a4b1b7c5da04283a67b0fb13f36047376bf3591aebd37abf508b366f5b6f5442f41c0572fc8ea15b5d92cc3479d018e57d72dbc1b03710dae0a3e27f92a6d96f0192b7d63af2827e693926c08f13039e8f8c9ec97d5ffb34e5ec25f1755964df048d22f48eed1756bf1660c619fb1a036901fd9ad5904ee354e90174b12ee8d4499e18f699f6f8bdcfa1959b5addba3f40eebc727594c7d267f5f123ed25db50eb98288c2d51416a120597f4ec0ebaa08a9f1afa7a92d63de9541d1d113c8d645bf0279db6e7e1d0ae71b785e47e14063ecfb148604d4b9e2ba9ac90744b6bfaab637e3e15d4eea24cb4e9c76d8efa750a7be5c5241a46c596fd39688b0dd52e540641c3f98d7095c6347ddebd31cce6193804607d34ff82f3e0dccc981a68e0d690a8b806ff757bb11") syz_emit_ethernet(0x2e, &(0x7f0000000000)={@empty, @broadcast, [{[], {0x8100, 0x1, 0x1, 0x4}}], {@arp={0x806, @ether_ipv4={0x1, 0x800, 0x6, 0x4, 0x9, @remote, @multicast1, @remote, @broadcast}}}}) syz_execute_func(&(0x7f0000000040)="0f5a60b006c4e1016bd7652fc4e1f8118100000080c4c11960183e673e0f01d9f2e1abf3ee660f148bf1ffffff") syz_extract_tcp_res(&(0x7f0000000080), 0x7fffffff, 0x7) csource_test.go:109: failed to build program: // autogenerated by syzkaller (https://github.com/google/syzkaller) #define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include static void kill_and_wait(int pid, int* status) { kill(pid, SIGKILL); while (waitpid(-1, status, 0) != pid) { } } static void sleep_ms(uint64_t ms) { usleep(ms * 1000); } static uint64_t current_time_ms(void) { struct timespec ts; if (clock_gettime(CLOCK_MONOTONIC, &ts)) exit(1); return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000; } static void use_temporary_dir(void) { char tmpdir_template[] = "./syzkaller.XXXXXX"; char* tmpdir = mkdtemp(tmpdir_template); if (!tmpdir) exit(1); if (chmod(tmpdir, 0777)) exit(1); if (chdir(tmpdir)) exit(1); } static void __attribute__((noinline)) remove_dir(const char* dir) { DIR* dp = opendir(dir); if (dp == NULL) { if (errno == EACCES) { if (rmdir(dir)) exit(1); return; } exit(1); } struct dirent* ep = 0; while ((ep = readdir(dp))) { if (strcmp(ep->d_name, ".") == 0 || strcmp(ep->d_name, "..") == 0) continue; char filename[FILENAME_MAX]; snprintf(filename, sizeof(filename), "%s/%s", dir, ep->d_name); struct stat st; if (lstat(filename, &st)) exit(1); if (S_ISDIR(st.st_mode)) { remove_dir(filename); continue; } if (unlink(filename)) exit(1); } closedir(dp); if (rmdir(dir)) exit(1); } static void thread_start(void* (*fn)(void*), void* arg) { pthread_t th; pthread_attr_t attr; pthread_attr_init(&attr); pthread_attr_setstacksize(&attr, 128 << 10); int i = 0; for (; i < 100; i++) { if (pthread_create(&th, &attr, fn, arg) == 0) { pthread_attr_destroy(&attr); return; } if (errno == EAGAIN) { usleep(50); continue; } break; } exit(1); } typedef struct { pthread_mutex_t mu; pthread_cond_t cv; int state; } event_t; static void event_init(event_t* ev) { if (pthread_mutex_init(&ev->mu, 0)) exit(1); if (pthread_cond_init(&ev->cv, 0)) exit(1); ev->state = 0; } static void event_reset(event_t* ev) { ev->state = 0; } static void event_set(event_t* ev) { pthread_mutex_lock(&ev->mu); if (ev->state) exit(1); ev->state = 1; pthread_mutex_unlock(&ev->mu); pthread_cond_broadcast(&ev->cv); } static void event_wait(event_t* ev) { pthread_mutex_lock(&ev->mu); while (!ev->state) pthread_cond_wait(&ev->cv, &ev->mu); pthread_mutex_unlock(&ev->mu); } static int event_isset(event_t* ev) { pthread_mutex_lock(&ev->mu); int res = ev->state; pthread_mutex_unlock(&ev->mu); return res; } static int event_timedwait(event_t* ev, uint64_t timeout) { uint64_t start = current_time_ms(); uint64_t now = start; pthread_mutex_lock(&ev->mu); for (;;) { if (ev->state) break; uint64_t remain = timeout - (now - start); struct timespec ts; ts.tv_sec = remain / 1000; ts.tv_nsec = (remain % 1000) * 1000 * 1000; pthread_cond_timedwait(&ev->cv, &ev->mu, &ts); now = current_time_ms(); if (now - start > timeout) break; } int res = ev->state; pthread_mutex_unlock(&ev->mu); return res; } #define BITMASK(bf_off,bf_len) (((1ull << (bf_len)) - 1) << (bf_off)) #define STORE_BY_BITMASK(type,htobe,addr,val,bf_off,bf_len) *(type*)(addr) = htobe((htobe(*(type*)(addr)) & ~BITMASK((bf_off), (bf_len))) | (((type)(val) << (bf_off)) & BITMASK((bf_off), (bf_len)))) static void sandbox_common() { struct rlimit rlim; rlim.rlim_cur = rlim.rlim_max = 128 << 20; setrlimit(RLIMIT_AS, &rlim); rlim.rlim_cur = rlim.rlim_max = 8 << 20; setrlimit(RLIMIT_MEMLOCK, &rlim); rlim.rlim_cur = rlim.rlim_max = 1 << 20; setrlimit(RLIMIT_FSIZE, &rlim); rlim.rlim_cur = rlim.rlim_max = 1 << 20; setrlimit(RLIMIT_STACK, &rlim); rlim.rlim_cur = rlim.rlim_max = 0; setrlimit(RLIMIT_CORE, &rlim); rlim.rlim_cur = rlim.rlim_max = 256; setrlimit(RLIMIT_NOFILE, &rlim); } static void loop(); static int do_sandbox_none(void) { sandbox_common(); loop(); return 0; } static long syz_execute_func(volatile long text) { ((void (*)(void))(text))(); return 0; } struct thread_t { int created, call; event_t ready, done; }; static struct thread_t threads[16]; static void execute_call(int call); static int running; static void* thr(void* arg) { struct thread_t* th = (struct thread_t*)arg; for (;;) { event_wait(&th->ready); event_reset(&th->ready); execute_call(th->call); __atomic_fetch_sub(&running, 1, __ATOMIC_RELAXED); event_set(&th->done); } return 0; } static void execute_one(void) { fprintf(stderr, "### start\n"); int i, call, thread; for (call = 0; call < 13; call++) { for (thread = 0; thread < (int)(sizeof(threads) / sizeof(threads[0])); thread++) { struct thread_t* th = &threads[thread]; if (!th->created) { th->created = 1; event_init(&th->ready); event_init(&th->done); event_set(&th->done); thread_start(thr, th); } if (!event_isset(&th->done)) continue; event_reset(&th->done); th->call = call; __atomic_fetch_add(&running, 1, __ATOMIC_RELAXED); event_set(&th->ready); event_timedwait(&th->done, 50); break; } } for (i = 0; i < 100 && __atomic_load_n(&running, __ATOMIC_RELAXED); i++) sleep_ms(1); } static void execute_one(void); #define WAIT_FLAGS 0 static void loop(void) { int iter = 0; for (;; iter++) { char cwdbuf[32]; sprintf(cwdbuf, "./%d", iter); if (mkdir(cwdbuf, 0777)) exit(1); int pid = fork(); if (pid < 0) exit(1); if (pid == 0) { if (chdir(cwdbuf)) exit(1); execute_one(); exit(0); } int status = 0; uint64_t start = current_time_ms(); for (;;) { if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid) break; sleep_ms(1); if (current_time_ms() - start < 5000) { continue; } kill_and_wait(pid, &status); break; } remove_dir(cwdbuf); } } uint64_t r[3] = {0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff}; void execute_call(int call) { intptr_t res = 0; switch (call) { case 0: *(uint32_t*)0x10000000 = 0; *(uint16_t*)0x10000004 = 4; *(uint8_t*)0x10000006 = 1; *(uint32_t*)0x10000040 = 8; res = syscall(SYS_getsockopt, 0xffffff9c, 0x84, 0x1e, 0x10000000, 0x10000040); fprintf(stderr, "### call=0 errno=%u\n", res == -1 ? errno : 0); break; case 1: *(uint32_t*)0x10000080 = 0; *(uint32_t*)0x10000084 = 0x7fff; *(uint32_t*)0x100000c0 = 8; res = syscall(SYS_getsockopt, -1, 0x84, 0x19, 0x10000080, 0x100000c0); fprintf(stderr, "### call=1 errno=%u\n", res == -1 ? errno : 0); break; case 2: res = syscall(SYS_dup, -1); fprintf(stderr, "### call=2 errno=%u\n", res == -1 ? errno : 0); if (res != -1) r[0] = res; break; case 3: *(uint32_t*)0x10000100 = 7; res = syscall(SYS_setsockopt, (intptr_t)r[0], 0x84, 8, 0x10000100, 4); fprintf(stderr, "### call=3 errno=%u\n", res == -1 ? errno : 0); break; case 4: *(uint32_t*)0x10000540 = 0x10000140; *(uint32_t*)0x10000544 = 0x95; *(uint32_t*)0x10000548 = 0x10000200; *(uint32_t*)0x1000054c = 0xb3; *(uint32_t*)0x10000550 = 0x100002c0; *(uint32_t*)0x10000554 = 0xac; *(uint32_t*)0x10000558 = 0x10000380; *(uint32_t*)0x1000055c = 0xb6; *(uint32_t*)0x10000560 = 0x10000440; *(uint32_t*)0x10000564 = 0xce; res = syscall(SYS_readv, (intptr_t)r[0], 0x10000540, 5); fprintf(stderr, "### call=4 errno=%u\n", res == -1 ? errno : 0); break; case 5: res = syscall(SYS_thr_wake, -1); fprintf(stderr, "### call=5 errno=%u\n", res == -1 ? errno : 0); break; case 6: res = syscall(SYS_socket, 2, 2, 0x88); fprintf(stderr, "### call=6 errno=%u\n", res == -1 ? errno : 0); if (res != -1) r[1] = res; break; case 7: res = syscall(SYS_freebsd12_closefrom, (intptr_t)r[1]); fprintf(stderr, "### call=7 errno=%u\n", res == -1 ? errno : 0); break; case 8: memcpy((void*)0x10000580, "./file0\000", 8); res = syscall(SYS_open, 0x10000580, 4, 0x40); fprintf(stderr, "### call=8 errno=%u\n", res == -1 ? errno : 0); if (res != -1) r[2] = res; break; case 9: memcpy((void*)0x100005c0, "\x2a\x36\x8a\x90\xb4\x88\xd0\x4e\xe1\xec\xcd\x13\x97\x78\x04\x3b\x00\xa6\xf8\x1a\x36\x27\xb5\x93\xb0\xdf\xce\x33\x26\x5c\xda\x8f\xba\x8b\x0f\xa5\x38\xb3\xe3\x64\xad\x1d\x1f\x7d\xe1\x01\x1c\x63\xf5\x92\xa6\x4d\xd0\xec\x95\x3f\x9c\x05\x0f\x99\x1f\x42\xd2\x4d\x7b\xc4\x7c\x4d\x5b\xf3\x23\xe3\x93\x60\x5e\x59\xa1\xeb\x5b\xc4\xe9\x48\xf8\x38\x90\x91\x1e\xd3\x5b\x53\xa2\xb0\xd6\x3d\xb7\x9d\xc2\x1d\x61\x90\xf8\xb4\x34\xd6\xff\x85\xe5\x4f\xb9\xa2\x8a\x75\x66\xd1\xa2\x43\x37\xe7\x2e\x82\xac\xc9\xe5\x18\x33\x9a\xca\xc7\xdd\x89\x60\xa1\xc9\xc5\xcb\x3d\xa9\xe6\xbc\x0b\x69\x7e\x9d\xbb\xc6\x0f\xa8\xb7\x2c\x37\x19\x28\x6b\xf4\x4c\x2e\x8f\xc8\x35\x6e\x91\x25\xea\xe9\xbe\xd2\x16\xf3\x49\xc2\x92\xc9\x89\xd7\xdc\xd2\x52\xdf\xb7\x9c\x4f\xdb\xdc\x86\x51\x09\xf1\xe3\xcf\x9c\xd6\x7c\xfa\x8b\xab\xb7\xd3\x62\x7c\xe0\x08\x09\x10\xc5\x75\x5c\x92\xcb\xb2\xc1\x59\x17\x2a\x65\xea\x8a\x20\x85\xf4\xce\x10\xe1\x43\x6e\xf2\xf7\xd6\xf1\xdb\x70\x2a\x38\x7c\xd3\x56\x81\x29\x33\x31\xbd\x1b\xdb\xd6\x90\x27\x4a\x7c\x37\x2f\x84\xe4\xd5\x74\x87\x91\xd7\x07\xee\x5c\x12\x7e\xda\x8b\x84\x59\x6b\x0c\x10\x89\x0c\x88\x10\x06\xbe\xb3\x8a\xd5\x6d\x13\x9d\x8c\x74\xf1\x4f\x35\x98\xde\x55\x1e\xe3\xa1\x34\x66\xe6\x7c\xb3\xd2\xc5\xfd\x90\x90\x61\x52\x20\x58\xff\xbe\x9a\xe4\x31\x32\x55\x44\xc8\x94\xb9\x84\x1a\x4c\x25\x36\x32\xa3\x32\xc6\xe0\xd8\x81\x64\x5f\x90\xb6\x33\x7d\xb9\x9b\x7f\xad\x1b\xd1\x62\xf7\x3d\x11\xce\x5e\x57\xd5\xf3\x21\xfb\x68\xa7\x95\xc9\x90\x66\x2a\x35\x70\x6a\xf8\x45\xb5\x38\x3f\xe5\x0b\xa8\x63\x76\x13\xdd\x43\xaa\x7c\xf2\x00\x20\x35\x52\x18\xe0\x60\xaf\x26\x58\x86\x63\x49\x19\x7f\x30\xc8\x35\x35\x1b\xd6\x96\x83\xba\xaa\xb8\xbe\x6b\x4d\xa0\x4f\xb3\x5a\x42\x33\x14\xfa\xb6\x10\xb8\xd1\xcf\x04\x40\xfe\xdb\x28\xa5\xe1\x95\x84\xef\x78\x67\xbd\x96\x2b\xa4\xed\xe5\x13\xaf\x03\xdd\xa6\x69\xf7\x6c\x67\xd2\x8f\xb5\x07\xd5\x76\x2c\x61\xd5\x28\xf1\xcf\x3a\x7c\x56\x3e\xee\x1c\x04\x10\x62\x54\xce\x3f\xd8\x21\xc1\x7a\x0d\xef\xc3\x7d\x79\xa5\xde\x7e\xf9\x35\x2c\x7b\x41\x1c\x95\x39\x58\xd2\x54\xd0\xd3\xe5\xae\x61\x8a\x68\xa5\x3e\x45\x80\x9d\x49\x3c\x47\x4a\x20\x8c\xcc\x0f\x17\x0d\xf4\x83\x6d\x05\x93\xb7\xb7\xce\x87\x4f\xa0\x1f\xe0\x41\x5a\x59\x4f\x94\x1c\x31\xf0\x78\x4a\xad\x39\x4f\x06\xb8\x53\x70\x29\x55\x5c\xcc\x73\xea\xab\x0b\x36\x84\x6f\xe5\xcc\x6e\x92\xdb\x0c\x90\xa6\x2d\x1d\x36\xc3\x82\xc3\x51\x92\x17\x89\xdf\xbe\x0f\x60\xb1\x3d\xb0\x81\x4a\xaf\x4f\xa6\xf8\x13\xa7\xcf\x2a\xd1\x2e\xbe\x10\x50\xee\xf9\x27\x68\xc3\x13\x71\x8d\x8d\xb2\x02\xe3\xd1\x09\x3d\xcf\x59\x33\x45\x1e\xfd\x9b\x72\xee\x4e\xf7\x5d\xfc\x0e\xa0\xaf\xff\xb8\x1b\xbe\xe5\x50\x38\x2b\x6b\x12\x12\xce\xa0\x97\xb7\x09\xae\xc7\xc0\xa8\x57\x99\x12\x7d\x01\x37\x6f\x7b\xd6\xf2\x55\x73\x29\x72\xf8\x89\xb6\x84\x3f\x61\x54\x78\xee\x23\x12\x47\x37\xf8\x13\xb1\x8f\x31\x33\xaf\x12\xb4\xe4\x1e\x70\xbe\xa0\x58\xb0\x0a\x5f\x96\x5e\xd2\x37\x7b\x48\x91\x6b\xc2\xa7\x16\x2a\xdb\xf7\xbc\x9c\xa1\x1a\xea\xaf\x88\xc2\xf5\x22\x9a\xf6\xdd\x38\x61\x57\x4a\x0d\x5d\x5a\xe4\x82\xf2\xd7\xe8\x6d\x17\x20\x05\xcc\xa5\x65\xb1\x2b\x19\x9a\x7d\x81\x08\x7d\x85\x77\x6d\x61\x39\x40\xb4\x87\x35\x26\x6d\x45\xa4\xad\x11\xe1\x68\xe8\x9b\x89\x3e\x65\x0b\x98\x4b\x48\x3a\xbb\x31\x8f\x43\x2f\x13\xc6\x1f\x26\xf3\xde\xab\xc6\xb4\x5d\xcf\x5f\xf4\x57\x9d\xa8\x9a\x9d\x23\x25\x1d\x1a\x6b\xec\x12\x2c\xb2\x10\xfc\x3a\xfa\x89\x10\x23\x95\xe1\xd2\x6b\x14\xca\x41\x80\xc1\xb6\xfe\x0b\x30\x00\x04\x95\x50\x28\x3b\x61\x8a\xb1\xfd\x6b\x16\x58\x55\xb2\x97\xd9\x45\x7a\xc5\x49\x46\xfb\x99\xe6\xf0\xd8\x87\x2d\xb8\x79\x34\x34\x7b\x6d\x9a\x38\xa7\x31\xbf\x8b\xd0\x8f\x2a\x7a\x7d\x80\xd4\xcf\x24\xfa\x9a\x16\xc2\x09\xa1\x84\x94\x13\x3d\x6d\xd0\xd2\x92\xef\xeb\xa7\x87\x2c\x4d\x7b\xdf\xaf\xd4\x16\xe6\x34\xcf\x90\xab\x4d\xc9\xbc\xcc\x64\x32\x27\xa0\x55\x52\xee\xe0\xf9\x16\xec\x20\x2d\xcb\x01\x1c\x83\x94\xb1\x09\x96\x87\x3a\x0a\x4b\x7a\xee\x15\x14\xf5\x95\xd2\x32\x89\xa3\xbf\x62\x08\x5b\x0a\xee\xa0\x00\x92\x06\xe7\xa7\x06\x1a\xd8\x66\x35\x22\x41\x70\x8a\xcb\xcf\x3c\x2f\xc0\xfd\xca\xaa\xa8\xb3\xbe\x8e\x51\x0b\x99\xe0\x4b\x96\xdd\xaf\xa9\xf8\x48\x3b\x7a\x56\x8c\x5e\xba\xdd\xad\x56\x77\xd9\x14\x4a\x27\x0d\x04\x44\xae\xa3\xc0\x77\x5d\x24\x1d\x79\xba\xea\x30\xdc\x4b\xb1\x9a\x71\x24\x71\xf1\x12\x83\x8c\x75\x25\x49\x6d\x4a\x8f\xa6\x66\x58\x61\x03\x47\xd4\x90\xaf\x85\x30\x5c\xea\xbf\x0f\x35\xac\x27\x7f\x2e\xf1\xb6\xa8\xe5\x81\x3c\xe0\xbe\xa5\x87\xe6\x27\xd7\x25\xf1\xdb\x12\x41\x22\x2a\xcd\x41\xe1\x6c\x8a\x32\xbd\xb4\x07\x78\xd4\xa1\x0f\x87\xb1\xe9\x0e\x00\x6d\xfc\x03\xd2\x93\x45\x89\xd2\x59\x65\x24\x0e\xe9\xc2\x14\x19\xa2\xaa\x5b\xd8\xf3\xfc\xd3\x20\x8f\x9b\x52\x15\x55\x13\xa6\xda\x73\x46\x8d\xc0\x70\x31\x02\xbc\xca\x0e\xba\x18\xe8\x8c\x19\xda\x64\xab\x5c\x6b\xf6\xcb\x81\x09\x73\x01\x53\x69\x33\x32\xf7\xe1\x60\x86\x27\x19\xdc\x08\x17\x5e\xd0\x74\xf5\xbf\x28\x87\x70\x55\x01\x33\x1c\xf7\x52\x54\xfc\xe0\xe1\x45\xac\x22\x41\x87\x52\x93\x03\x6f\x2a\xa9\x65\x92\x19\x40\x73\xd0\x47\x54\xc2\x6f\x19\xe7\x76\x33\x32\xb4\x3d\x02\x87\xa2\x83\x47\xd5\x15\x5b\xac\xfd\x32\x62\x8f\x50\x0d\x9e\x9c\x04\xf5\x36\x9f\x63\x17\xe6\x06\xe4\x22\xf9\x8c\x48\xb1\x1f\x75\x5b\x2b\x0f\xdc\x79\x49\x4a\x76\x97\x00\xd3\x5a\x88\xa3\x30\xf0\x2c\xab\x2f\xb7\xb6\x50\x49\xe2\xd1\xe3\x50\xa6\xe0\x2d\x5d\x54\xac\x7c\x85\xf2\x68\xc0\xea\xf7\x70\x71\xd5\xac\xab\xed\x99\x42\x90\x30\xd0\x0b\x30\xc4\xca\xa2\x1c\xe3\x22\xd4\xf7\x80\xe8\x92\x20\x11\x29\xff\x77\x2d\x22\xcc\x4d\x4c\x27\x4b\x47\x99\x48\xd2\x2a\xcf\xc1\x76\x0b\x29\x17\xff\x30\x8e\x9a\x3a\xa2\x27\x79\xbd\x0f\x45\x3d\x11\xe0\xde\xe7\x88\xdc\xf9\x5b\x7b\xe9\x0c\x3b\x3b\x3a\x7f\xe5\x35\xda\x50\x3c\x38\x1e\x34\x6e\xb2\xa0\xb0\xe3\x75\xad\x72\x6e\xe2\xa3\x89\x19\x81\x0d\x5c\x54\x5e\xdc\xea\x1b\x23\x10\x9a\x3f\xb6\x8e\x30\xc0\x1c\xc7\x04\xa9\xd2\x3a\xe5\x5d\x18\xcc\x9f\xdf\xf0\x2b\xd4\x84\xd5\x9f\x46\x8d\x75\xa7\x96\x65\x7f\xdc\xa5\x9f\x55\xd4\xbe\x7e\xfd\x73\x78\xa3\x16\x85\x33\x4a\xdc\x0c\xac\xae\xf9\xaf\x56\x49\xda\x85\xdc\x6c\x59\x89\xcf\x8e\x2b\x99\x77\xa6\x2a\x8c\xa8\xbc\x27\x78\x2b\x1b\x30\x28\xa4\xde\x9a\x0e\x87\xdb\xab\x78\x79\x14\x4e\x40\xa8\x11\xf0\xb1\xb2\x88\x0d\x26\x82\x3c\x99\x0a\xde\xb7\xdf\x41\x11\x6f\xcf\x60\x22\xa0\x8d\x87\xac\x7c\x63\xec\xdf\xf7\x96\xda\xfa\x08\x2e\x5c\xd8\x5d\x6c\x3f\x17\xf8\x74\x0e\xa1\xe9\xa0\xc8\x86\xe0\xcd\x70\x74\xc4\x5d\xbc\x2d\xc7\xb3\x4c\x68\x59\xe0\x6a\x0c\xee\x9b\x20\xce\x43\x72\x4a\x41\x4e\xb7\x7b\x0b\x80\x4d\xff\xcc\x7b\xc4\x4d\xab\x7f\xa0\x2a\x38\x36\xea\xe3\x96\xf9\xed\xe4\x8d\x6d\xee\xa3\x33\xb0\xa9\x90\xeb\xbc\xd1\xb3\x36\xbb\x73\xd8\xe7\x2c\x72\xe1\x24\x49\xf1\xca\x72\x0a\x3b\xcd\x97\x88\xd1\xdc\xdd\xe5\x12\x14\xb7\x71\xa1\xca\x13\x89\xeb\xb5\xa0\x56\x45\xac\xf9\x73\x15\x65\x1a\xe8\x86\xec\xd5\xf0\x09\xa7\xcc\x62\xbf\xc4\x94\x59\xb7\x1f\xea\x3f\x8a\xdc\x05\xd3\x71\x29\x78\x1a\xc9\x07\x3e\xb8\x3f\x1e\xeb\x1f\xc8\x4a\x90\xc8\x31\x6c\x36\x16\x42\x59\xa7\xc2\x4e\x5a\x20\x0c\x35\x3e\xbd\x7b\xf2\x32\x4e\xff\x52\x16\x80\xb2\x18\xa8\x65\x4b\x6d\xf7\xb0\x46\xaf\xdc\x85\xa7\x8c\xfe\xe1\x74\xa6\xe9\x19\x78\xd4\xaf\x65\x11\xd3\x07\x99\x19\x5d\xf4\x28\x86\xc8\x32\x7d\xcc\x62\x4c\x29\x12\xf8\x3f\xe1\xbb\x63\x02\xec\x71\xa8\xf0\x98\xd5\xe0\x56\xd8\x95\x95\xc4\x60\x06\x2d\x29\xa5\x54\x6e\x5b\xa7\x7e\x0a\x17\x9a\x84\x8f\x03\x3e\x11\xaf\xc1\xa1\x98\x97\xe8\x3c\x2a\xb7\xeb\x58\x20\x72\x22\x15\x67\x67\xeb\xdb\x2e\x24\x26\xae\x2c\x59\x4c\x20\x5d\xa5\x96\x50\x28\x3b\x33\xcb\xf5\x0a\x77\xd6\x07\xde\x9e\x2f\xfe\x0f\x08\x0f\xd7\x73\xc7\xe0\x3f\x20\x50\x5d\xd0\xcb\x15\xcd\x89\x24\xcd\xd6\xb8\x7d\x7f\x61\x5b\xcc\xd2\xeb\x47\x83\x95\x61\xd7\x9a\x02\xca\x9c\xde\x0f\xde\x19\xb5\xa0\xc2\xa9\x0b\xd4\xa0\xc7\x36\x1b\xfd\xad\x53\x74\xac\x42\xb5\x16\x11\x15\x75\x9c\xfa\x2a\xc0\x8c\x16\x79\x5a\xb5\x2c\x84\xc5\x40\x71\x0b\x1d\x1d\x50\x06\xf2\xab\xa0\x98\xc6\xb6\x82\xa5\x1f\x03\xff\x5d\x79\xb6\xbc\xe0\x20\xce\x72\x6f\x7f\xa2\xe7\x68\x51\x38\x08\x7d\x60\x9c\x05\x05\x4a\x9f\x4c\x45\x68\x15\x2e\x89\x00\xd8\x66\xbd\x4a\x98\x0b\x07\xd3\x5b\x83\x36\x47\xd1\xf4\xe2\x65\x75\xd4\xde\x1c\x7a\x7c\xcf\x5c\xd1\x19\xd6\xdb\x4c\x72\xfb\x9c\x24\xe3\xa0\x85\xec\xdd\xe5\x21\xff\x18\xbe\xc6\xc1\x6c\x93\x14\x57\xcd\x8e\x26\x46\x1d\x48\xb5\x5c\x21\x1a\x27\xba\x49\x86\x63\xb3\x4e\xa0\xdc\xfd\x8c\xdf\xa1\x29\x00\xfe\x83\x67\xab\xbe\xac\x8e\x4e\xb1\xa1\x80\x36\xc9\xc1\x69\x49\x35\xa5\x73\xb6\x1a\xfc\x05\xc1\x26\x5a\xaf\xb6\xef\x58\x4e\x82\x3b\x84\x27\x64\xb7\x1d\xca\x33\x18\x37\x64\x9a\x51\xd0\xc9\x6c\xef\xec\x43\x58\x35\xb8\xf4\xb5\xda\xc5\xd1\xf2\x4b\xe9\x4d\x53\x78\xa1\x66\x4e\xfc\x1d\xaf\x55\x70\x15\x65\x7a\xdb\x77\x88\x1c\x5d\x18\x1c\xd9\xd1\xf1\xd3\xd9\x6b\xf7\x4d\x51\x67\x93\x02\x85\xb6\xf9\x8f\xef\x31\xbb\xef\x73\x78\xcf\x2f\x12\xc4\xc4\x79\xf9\x60\x76\xd8\x17\x0d\x76\x8d\xfd\x2f\xe8\x23\xcd\x14\xd6\xd7\x05\x9d\x75\xd9\x54\x7a\xb2\x2a\xda\x6f\xd1\xa3\x64\xae\x76\x29\xe6\xf7\xe4\x66\xa4\xc8\xa4\x94\x83\xe4\x55\x5f\x6c\x08\x81\xfd\x2c\xee\x97\x92\x32\x47\xf2\xca\x83\x9f\x88\xb1\xed\xa7\xc3\xb7\xc7\x5f\x53\x0c\x0f\xd6\x0b\x85\xe8\xb1\x0d\x4b\x58\xd7\xb8\x81\x5b\xbf\x1e\x4f\x42\xa1\x6b\x25\x22\x58\x88\xbd\xa2\x47\xd4\x6b\xe3\x55\x13\x25\xb6\x06\xf6\x1c\xe7\x76\xa9\x2f\x04\x68\x84\xfd\x27\x5e\x82\xd4\xc0\x87\x61\xb6\x0d\x69\x8c\x5a\xdd\xe7\x8d\xed\x62\xd8\x83\x5a\x1b\x23\xb3\xff\x96\x57\x6b\x2c\x19\x8f\x72\x2e\x76\xea\x22\x66\x73\x88\xa4\x4e\xd3\x16\xea\x6d\xc5\xbe\x4b\xd8\x40\x43\x57\x2a\x2a\xfa\x19\xcd\x9a\x84\xef\x5f\xfc\x28\xfb\x0f\x68\x9c\x4c\x25\x26\xce\xc2\x61\x50\x2f\x1e\x0a\xf6\x65\xcb\xde\xf5\x0e\x3a\x66\x9c\x0a\xa1\x36\x43\x07\xc8\x9d\x76\x6d\x58\x69\xe2\xc9\xe4\x14\xca\x21\x67\x35\xc0\x18\x26\xee\xe4\xea\x8b\xcb\x09\xb6\x7a\x8d\xd8\xf7\xed\xb6\x85\x36\xc6\xee\xfa\x0f\xa0\xd7\x8f\x4a\x86\xbd\x70\x48\x2d\x98\x52\xe4\x82\x91\xd1\xe1\x6a\xd1\x14\x34\x77\x9a\x27\x86\x1a\xf8\x19\x2a\x64\x27\x50\x84\xe7\xd9\xe0\x60\x4c\x52\x07\x3c\x33\x24\xb9\x57\x7b\x08\x80\x73\xab\x27\x00\x41\xd0\x41\xcf\x5f\xf1\x88\x31\xb8\x0e\x00\xa2\x73\xb6\x86\x00\x59\xbe\xc4\xa6\xc4\x19\x02\x64\x4e\xf9\x23\xe8\x90\xd5\x58\xb5\xa9\x6e\xf9\xee\xfe\x19\xde\x12\x07\x35\xe9\x89\x87\xa9\x8d\x53\xa5\x6e\x32\x26\xc5\x76\xcd\x2e\xf4\x86\xae\x13\x8f\xf3\xb6\x2e\xae\x33\xca\x91\xf8\xb7\x7d\x3a\x98\xf5\x83\xe8\x63\xd4\xeb\xe5\x3d\x0b\x3f\xa9\x7c\x47\x68\x28\x05\x93\xf9\x35\xf6\x14\x25\x95\xed\x15\x05\x7a\xdf\x8b\x60\x14\x86\x20\x49\x3a\xfe\xb5\xff\x5d\xe1\x7b\x6a\xc2\x6d\x5b\xbb\x7c\xf7\xf4\x71\x32\x64\x2e\xbe\x73\xde\x00\x51\xf0\x73\x61\x0b\x0c\x1e\xae\xf6\x74\x99\x19\xcf\x0e\x87\x14\x4c\x0d\x8f\x70\xee\xab\xb7\xfe\x6c\x2e\x58\xf9\x14\xe5\x44\xe8\xbe\x21\xc2\xf3\xa6\x02\xd6\x1c\xfc\xf0\x17\x65\xe4\x9c\xbc\xd0\xa6\xf9\xb1\x61\x6e\xc5\x6a\x4d\xe6\xe5\x2b\xc9\x79\x84\x0a\x84\x2d\x9b\x2d\xd4\xb5\xd5\x9d\x15\xb3\xce\x85\x13\x8b\xc9\x8c\x1e\x25\x4c\x84\x85\x3b\x67\x26\xb6\xfd\xb7\xbc\x79\xe9\x0d\x34\xbe\x3d\xd8\x6c\x4d\xef\xbf\xac\x94\x38\x80\x29\x2f\xec\x0d\x99\x5c\xdb\x52\x44\x51\x4d\x11\x51\x8e\xfe\x79\x20\x4d\x53\xc9\xcd\xa4\xa4\x87\xbf\x30\xe9\xff\x7f\x28\x6e\x53\x6a\xc1\xfe\x9f\xa1\xa7\x1f\x3e\xed\x0e\x47\xf8\x47\x1e\x88\xdb\x19\xfc\xd3\xe3\x19\x76\x98\x96\x97\x98\xf2\x6d\x5c\x9c\x4b\x8a\x7b\x93\x5a\x0f\xaf\x39\x5d\x2b\xa9\xee\x8c\x57\xe1\x37\x47\xad\x4d\x01\xa2\xee\xca\x7e\x85\x3f\x9c\x52\x73\xfc\x16\x18\x54\xc2\xe9\x66\xf8\x53\xa4\x88\x88\x44\x44\x22\x91\xed\x0b\x3c\x59\x31\x5f\x8c\xba\xe2\xc9\xa4\xaf\x08\x4d\x10\xcb\x4c\x7e\x64\x00\x01\xb7\xf3\x40\x13\x2d\x80\x47\x4c\x6d\xaa\x0e\x00\x9c\x38\x0d\xf0\xfe\xb5\x7d\x5e\xb1\xed\x8b\x40\xcd\xf2\x44\x6c\x8a\x42\x4d\x48\xeb\xe5\x89\x7d\x92\x2e\x42\xf2\x5b\x98\x83\x63\x95\xdb\x51\x3e\x49\x04\xfc\x25\x21\xac\xca\x53\x03\xac\x57\x64\x54\xe6\x02\xd4\xb3\x55\x20\x73\x68\x18\xa8\x46\x83\x79\x00\x0f\x8f\x30\xf9\xe3\x7d\x05\xc7\xbc\x1f\x16\xec\xc9\xac\xb0\xf8\xc6\x30\x96\x67\x75\x57\x5a\x40\x64\xa7\x70\xf7\xb5\x3f\x7c\xa7\xcc\xc0\x0b\xdb\x71\x19\x5d\x53\xcf\x21\xb7\x48\x20\x66\x52\x20\xc0\x57\x85\xb2\x25\xb2\xcb\xe2\x85\x5a\x5a\xe4\x0b\x9b\xce\x9e\x1e\xdd\xb7\x8a\x9e\x4c\x08\x25\xfb\x47\xff\xf9\xe6\xf3\x7a\x95\x54\xd9\xee\x04\x6c\xd1\x8a\x30\x1d\xae\xe2\x6e\xc5\xee\xf4\xf1\x01\x25\x6e\x0c\x59\xdf\x35\xcb\xb5\x19\x2f\x80\x16\x2b\xa3\x93\x7d\xbf\x36\x19\x98\x7b\xf1\x8b\x1d\x69\xd6\xe6\xe0\xc4\x2f\xea\xd7\xf0\xed\x6d\x2c\xf5\x4d\xa7\x8f\x87\x49\x60\xe4\x45\xa1\x08\xb7\xbb\x09\x87\xcb\x94\x27\xe1\x02\x3a\x1c\x85\xc2\x72\xc1\x0b\xca\x78\x1f\x98\xc7\x6e\x10\x67\x39\x24\xe6\x58\xe7\x36\xcc\x54\x4a\xfc\x0c\xde\xcd\xe8\xe5\x8d\x14\xa1\x8e\x4b\x74\x21\x50\x75\x1a\x46\xa1\x4d\x90\xd7\x10\xa9\xea\x82\x26\x6e\x46\x65\x4b\xbc\x15\x36\x85\xc1\x95\x99\x8b\x09\x23\xcc\xe3\x13\x50\xb7\x9b\x20\x39\xf2\x38\x55\xdc\x3b\xa1\x14\x38\xb1\x5c\xc0\x3a\xaa\xd9\xd3\x1b\x58\x19\xc4\xb4\x12\x34\xe9\x3a\x30\x61\x55\x47\x9a\x6b\xd4\x5d\xf8\x4e\x1c\xf9\xe8\xd8\xea\x0e\x89\x6d\x92\x88\xd2\xe4\x8d\x87\x30\xd8\x6b\xf8\x99\x7c\x62\xa8\x37\x8a\xd9\x59\x25\x67\x2d\xef\xba\xa1\xc9\xcb\xa3\x15\xce\x1e\x64\xf8\x61\x6b\x17\x4b\x88\xc5\x7a\xb7\x80\x74\x8a\xe9\x6c\xdb\xe3\x6d\xc4\xd7\x90\x54\xfd\xd7\xbe\xc3\xb4\x0b\x1f\xc7\xb1\x26\x6e\x19\x7c\xa7\xfe\x41\xd0\x74\x3a\xd9\xa8\xa1\x04\x30\xa4\xe1\xcc\xed\xf8\xaa\x48\x62\x3f\xff\xa2\xbf\xd3\x30\x36\x4b\x0e\x3a\xa1\xdb\x7d\x9b\x9a\xa4\xca\x8e\x17\xd9\x3c\x91\x6d\x6a\xfe\x57\xd3\x3f\x7b\x05\x9b\x67\x0b\xba\x34\xbc\xee\xd5\x11\x65\xff\xc0\xdc\xa6\xaf\x53\x2e\xb3\xef\x97\x6b\x29\x6e\x97\x5c\xe2\x5b\x40\xec\x63\x9c\xa4\x35\x93\xb2\x59\x46\xba\x82\xa8\x19\xe8\xf1\xaf\xa7\xdf\xa3\x45\xf3\x5c\xc0\x8b\xf3\xe7\x73\x02\x88\x6c\xaf\x08\xe1\x43\x24\x45\xf6\x7d\xc5\x9c\x69\x85\xe7\xf8\xc9\xbb\xc8\xa6\x8a\x39\x25\xe2\x0c\x14\xbd\xd2\xb6\x92\x2b\xc9\x24\x32\x1f\x58\x23\xdf\x51\x18\x34\xf2\xa2\x9e\x4d\x7e\x32\x0f\x96\x3c\x7a\xd3\xa1\x52\x22\xaf\xa2\x2a\x98\x37\x51\x47\xfb\x3f\x43\x33\xf5\xb8\xc1\x39\xa1\x04\x5d\x3c\xc6\xde\x57\xb2\x4a\x23\x41\xcc\x16\xb3\xdf\xe0\x69\xa3\x58\x65\xb8\x52\xc2\xf8\x4f\xd4\xec\x28\xec\x17\x8f\xd0\xb9\xff\x32\xe1\xe5\x29\xbf\x3d\xc9\x69\xae\x17\xdb\x13\x96\xc2\xcb\xa7\x4b\x6a\xd4\xb8\x32\x07\xea\xb4\xb1\x2c\x93\x60\x4d\xa7\xeb\xbd\x03\x9b\xae\x1e\xa1\xcb\xf5\xc9\x79\x87\x0e\x8e\x87\xae\xc0\xc8\x83\xe8\xb9\x52\xbe\xc1\x98\x67\x60\x40\x3b\x19\x3e\x16\x5f\xff\x20\xff\x51\x60\xa4\x34\xbd\x25\xa7\xcb\xec\xc4\xf8\xb9\xb7\xa5\x5b\x41\x29\x6f\x96\x09\x34\x2b\x8a\x76\xaf\xb6\xab\x98\x91\xbd\x17\x42\x70\x8a\x99\xf3\x4a\x56\xef\xc1\x39\x20\x0f\x1b\x5f\xe1\x57\xbb\x27\x62\x40\xe7\xe2\xa0\xa0\xf4\xea\x59\x1a\xc0\xb2\x4a\x21\xcc\xd1\xcc\x4e\xf6\xc8\xba\xa0\x82\xde\xa2\x3f\xe5\x49\x90\x1e\xcb\xe7\x8c\x47\x4b\x27\x54\x33\x49\x05\x9f\x91\x15\xa5\x91\x39\xe4\x5e\xe6\xf9\xff\x40\x52\x38\x54\x22\xc9\x38\x61\x59\x4f\xe9\x89\xfa\x84\xd2\x82\x1d\x63\xea\x55\xd9\x32\x7d\x70\x19\xe9\x12\xf7\xeb\xae\xbf\x24\xbf\x21\x16\xcc\xc1\xa6\xa2\x83\xc3\x97\xba\x3c\xaa\x5e\xa8\xd4\x4a\xc7\x36\x78\x3f\xb4\xef\x27\x15\x95\x70\xae\xf5\x11\x56\xe9\x0e\x69\x4f\xaa\x6d\x1a\x9e\x19\x21\xd8\xd1\xb1\x87\xc3\xea\x36\x7f\x33\x08\xcf\xe1\xb7\x41\x2a\x55\x8b\xf3\xce\x7f\xfe\xf3\x0f\x89\x27\xe4\x96\x12\x6e\x3e\xfe\x17\x1f\x4b\xee\xf7\x1b\xae\x80\xd3\x63\xf5\xb7\x3a\xa8\xf7\xa9\x12\x82\x42\x6c\xa3\xc7\xf0\x88\xe4\x25\x56\xc5\x65\x45\xbd\x0d\xe1\x96\x96\xd7\xb6\x07\x37\x65\x80\x08\xfd\x63\xc2\x3f\xef\xdc\xf5\x5a\x33\x58\x46\xb1\xa1\xda\xba\x80\x40\x4b\x4f\xc4\x87\xd1\x9f\x32\xe3\xad\x86\x81\x39\x0f\x2c\x57\xa2\x09\x74\x24\x4f\xd1\x12\xdd\x0c\x88\x30\xe4\x11\x60\xd5\xd7\x40\x59\x95\x13\xae\x0c\x03\xa9\x08\xa0\x08\xeb\x41\x19\x68\xd5\x3f\x5b\x9c\x1d\x8d\xd4\xf3\xf0\x36\x55\x92\xe6\x26\xf4\xf2\x01\x68\x52\x1a\x58\x73\x97\x67\xb1\x8c\xf2\x40\x0c\xa6\xf6\x97\xcc\xea\x44\x63\xaa\x90\x38\x90\x92\xf3\x5e\xca\x8a\x4b\x1b\x7c\x5d\xa0\x42\x83\xa6\x7b\x0f\xb1\x3f\x36\x04\x73\x76\xbf\x35\x91\xae\xbd\x37\xab\xf5\x08\xb3\x66\xf5\xb6\xf5\x44\x2f\x41\xc0\x57\x2f\xc8\xea\x15\xb5\xd9\x2c\xc3\x47\x9d\x01\x8e\x57\xd7\x2d\xbc\x1b\x03\x71\x0d\xae\x0a\x3e\x27\xf9\x2a\x6d\x96\xf0\x19\x2b\x7d\x63\xaf\x28\x27\xe6\x93\x92\x6c\x08\xf1\x30\x39\xe8\xf8\xc9\xec\x97\xd5\xff\xb3\x4e\x5e\xc2\x5f\x17\x55\x96\x4d\xf0\x48\xd2\x2f\x48\xee\xd1\x75\x6b\xf1\x66\x0c\x61\x9f\xb1\xa0\x36\x90\x1f\xd9\xad\x59\x04\xee\x35\x4e\x90\x17\x4b\x12\xee\x8d\x44\x99\xe1\x8f\x69\x9f\x6f\x8b\xdc\xfa\x19\x59\xb5\xad\xdb\xa3\xf4\x0e\xeb\xc7\x27\x59\x4c\x7d\x26\x7f\x5f\x12\x3e\xd2\x5d\xb5\x0e\xb9\x82\x88\xc2\xd5\x14\x16\xa1\x20\x59\x7f\x4e\xc0\xeb\xaa\x08\xa9\xf1\xaf\xa7\xa9\x2d\x63\xde\x95\x41\xd1\xd1\x13\xc8\xd6\x45\xbf\x02\x79\xdb\x6e\x7e\x1d\x0a\xe7\x1b\x78\x5e\x47\xe1\x40\x63\xec\xfb\x14\x86\x04\xd4\xb9\xe2\xba\x9a\xc9\x07\x44\xb6\xbf\xaa\xb6\x37\xe3\xe1\x5d\x4e\xea\x24\xcb\x4e\x9c\x76\xd8\xef\xa7\x50\xa7\xbe\x5c\x52\x41\xa4\x6c\x59\x6f\xd3\x96\x88\xb0\xdd\x52\xe5\x40\x64\x1c\x3f\x98\xd7\x09\x5c\x63\x47\xdd\xeb\xd3\x1c\xce\x61\x93\x80\x46\x07\xd3\x4f\xf8\x2f\x3e\x0d\xcc\xc9\x81\xa6\x8e\x0d\x69\x0a\x8b\x80\x6f\xf7\x57\xbb\x11", 4096); res = syscall(SYS_ioctl, (intptr_t)r[2], 0xc0f24413, 0x100005c0); fprintf(stderr, "### call=9 errno=%u\n", res == -1 ? errno : 0); break; case 10: *(uint8_t*)0x10000000 = 0; *(uint8_t*)0x10000001 = 0; *(uint8_t*)0x10000002 = 0; *(uint8_t*)0x10000003 = 0; *(uint8_t*)0x10000004 = 0; *(uint8_t*)0x10000005 = 0; *(uint8_t*)0x10000006 = -1; *(uint8_t*)0x10000007 = -1; *(uint8_t*)0x10000008 = -1; *(uint8_t*)0x10000009 = -1; *(uint8_t*)0x1000000a = -1; *(uint8_t*)0x1000000b = -1; *(uint16_t*)0x1000000c = htobe16(0x8100); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 1, 0, 3); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 1, 3, 1); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 4, 4, 12); *(uint16_t*)0x10000010 = htobe16(0x806); *(uint16_t*)0x10000012 = htobe16(1); *(uint16_t*)0x10000014 = htobe16(0x800); *(uint8_t*)0x10000016 = 6; *(uint8_t*)0x10000017 = 4; *(uint16_t*)0x10000018 = htobe16(9); *(uint8_t*)0x1000001a = 0xaa; *(uint8_t*)0x1000001b = 0xaa; *(uint8_t*)0x1000001c = 0xaa; *(uint8_t*)0x1000001d = 0xaa; *(uint8_t*)0x1000001e = 0xaa; *(uint8_t*)0x1000001f = 0xbb; *(uint32_t*)0x10000020 = htobe32(0xe0000001); *(uint8_t*)0x10000024 = 0xaa; *(uint8_t*)0x10000025 = 0xaa; *(uint8_t*)0x10000026 = 0xaa; *(uint8_t*)0x10000027 = 0xaa; *(uint8_t*)0x10000028 = 0xaa; *(uint8_t*)0x10000029 = 0xbb; *(uint32_t*)0x1000002a = htobe32(-1); (void)res; break; case 11: memcpy((void*)0x10000040, "\x0f\x5a\x60\xb0\x06\xc4\xe1\x01\x6b\xd7\x65\x2f\xc4\xe1\xf8\x11\x81\x00\x00\x00\x80\xc4\xc1\x19\x60\x18\x3e\x67\x3e\x0f\x01\xd9\xf2\xe1\xab\xf3\xee\x66\x0f\x14\x8b\xf1\xff\xff\xff", 45); res = -1; errno = EFAULT; res = syz_execute_func(0x10000040); fprintf(stderr, "### call=11 errno=%u\n", res == -1 ? errno : 0); break; case 12: (void)res; break; } } int main(void) { syscall(SYS_mmap, 0x10000000, 0x1000000, 7, 0x1012, -1, 0); use_temporary_dir(); do_sandbox_none(); return 0; } :358:17: error: use of undeclared identifier 'SYS_freebsd12_closefrom' res = syscall(SYS_freebsd12_closefrom, (intptr_t)r[1]); ^ 1 error generated. compiler invocation: clang [-o /tmp/syz-executor788111170 -DGOOS_freebsd=1 -DGOARCH_386=1 -DHOSTGOOS_freebsd=1 -x c - -m32 -O2 -pthread -Wall -Werror -Wparentheses -Wunused-const-variable -Wframe-larger-than=16384 -static -lc++ -Wno-overflow] --- FAIL: TestGenerate/freebsd/386/12 (1.18s) csource_test.go:108: opts: {Threaded:true Collide:false Repeat:true RepeatTimes:0 Procs:0 Slowdown:1 Sandbox:none Fault:false FaultCall:0 FaultNth:0 Leak:false NetInjection:false NetDevices:false NetReset:false Cgroups:false BinfmtMisc:false CloseFDs:false KCSAN:false DevlinkPCI:false USB:false VhciInjection:false Wifi:false IEEE802154:false Sysctl:false UseTmpDir:true HandleSegv:true Repro:false Trace:false} program: getsockopt$inet6_sctp_SCTP_EVENT(0xffffffffffffff9c, 0x84, 0x1e, &(0x7f0000000000)={0x0, 0x4, 0x1}, &(0x7f0000000040)=0x8) getsockopt$inet6_sctp_SCTP_MAX_BURST(0xffffffffffffffff, 0x84, 0x19, &(0x7f0000000080)={0x0, 0x7fff}, &(0x7f00000000c0)=0x8) r0 = dup(0xffffffffffffffff) setsockopt$inet6_sctp_SCTP_ADAPTATION_LAYER(r0, 0x84, 0x8, &(0x7f0000000100)={0x7}, 0x4) readv(r0, &(0x7f0000000540)=[{&(0x7f0000000140)=""/149, 0x95}, {&(0x7f0000000200)=""/179, 0xb3}, {&(0x7f00000002c0)=""/172, 0xac}, {&(0x7f0000000380)=""/182, 0xb6}, {&(0x7f0000000440)=""/206, 0xce}], 0x5) thr_wake(0xffffffffffffffff) r1 = socket$inet_udplite(0x2, 0x2, 0x88) freebsd12_closefrom(r1) r2 = open(&(0x7f0000000580)='./file0\x00', 0x4, 0x40) ioctl$DIOCGETSTATE(r2, 0xc0f24413, &(0x7f00000005c0)="2a368a90b488d04ee1eccd139778043b00a6f81a3627b593b0dfce33265cda8fba8b0fa538b3e364ad1d1f7de1011c63f592a64dd0ec953f9c050f991f42d24d7bc47c4d5bf323e393605e59a1eb5bc4e948f83890911ed35b53a2b0d63db79dc21d6190f8b434d6ff85e54fb9a28a7566d1a24337e72e82acc9e518339acac7dd8960a1c9c5cb3da9e6bc0b697e9dbbc60fa8b72c3719286bf44c2e8fc8356e9125eae9bed216f349c292c989d7dcd252dfb79c4fdbdc865109f1e3cf9cd67cfa8babb7d3627ce0080910c5755c92cbb2c159172a65ea8a2085f4ce10e1436ef2f7d6f1db702a387cd35681293331bd1bdbd690274a7c372f84e4d5748791d707ee5c127eda8b84596b0c10890c881006beb38ad56d139d8c74f14f3598de551ee3a13466e67cb3d2c5fd909061522058ffbe9ae431325544c894b9841a4c253632a332c6e0d881645f90b6337db99b7fad1bd162f73d11ce5e57d5f321fb68a795c990662a35706af845b5383fe50ba8637613dd43aa7cf20020355218e060af2658866349197f30c835351bd69683baaab8be6b4da04fb35a423314fab610b8d1cf0440fedb28a5e19584ef7867bd962ba4ede513af03dda669f76c67d28fb507d5762c61d528f1cf3a7c563eee1c04106254ce3fd821c17a0defc37d79a5de7ef9352c7b411c953958d254d0d3e5ae618a68a53e45809d493c474a208ccc0f170df4836d0593b7b7ce874fa01fe0415a594f941c31f0784aad394f06b8537029555ccc73eaab0b36846fe5cc6e92db0c90a62d1d36c382c351921789dfbe0f60b13db0814aaf4fa6f813a7cf2ad12ebe1050eef92768c313718d8db202e3d1093dcf5933451efd9b72ee4ef75dfc0ea0afffb81bbee550382b6b1212cea097b709aec7c0a85799127d01376f7bd6f255732972f889b6843f615478ee23124737f813b18f3133af12b4e41e70bea058b00a5f965ed2377b48916bc2a7162adbf7bc9ca11aeaaf88c2f5229af6dd3861574a0d5d5ae482f2d7e86d172005cca565b12b199a7d81087d85776d613940b48735266d45a4ad11e168e89b893e650b984b483abb318f432f13c61f26f3deabc6b45dcf5ff4579da89a9d23251d1a6bec122cb210fc3afa89102395e1d26b14ca4180c1b6fe0b3000049550283b618ab1fd6b165855b297d9457ac54946fb99e6f0d8872db87934347b6d9a38a731bf8bd08f2a7a7d80d4cf24fa9a16c209a18494133d6dd0d292efeba7872c4d7bdfafd416e634cf90ab4dc9bccc643227a05552eee0f916ec202dcb011c8394b10996873a0a4b7aee1514f595d23289a3bf62085b0aeea0009206e7a7061ad866352241708acbcf3c2fc0fdcaaaa8b3be8e510b99e04b96ddafa9f8483b7a568c5ebaddad5677d9144a270d0444aea3c0775d241d79baea30dc4bb19a712471f112838c7525496d4a8fa66658610347d490af85305ceabf0f35ac277f2ef1b6a8e5813ce0bea587e627d725f1db1241222acd41e16c8a32bdb40778d4a10f87b1e90e006dfc03d2934589d25965240ee9c21419a2aa5bd8f3fcd3208f9b52155513a6da73468dc0703102bcca0eba18e88c19da64ab5c6bf6cb8109730153693332f7e160862719dc08175ed074f5bf2887705501331cf75254fce0e145ac2241875293036f2aa96592194073d04754c26f19e7763332b43d0287a28347d5155bacfd32628f500d9e9c04f5369f6317e606e422f98c48b11f755b2b0fdc79494a769700d35a88a330f02cab2fb7b65049e2d1e350a6e02d5d54ac7c85f268c0eaf77071d5acabed99429030d00b30c4caa21ce322d4f780e892201129ff772d22cc4d4c274b479948d22acfc1760b2917ff308e9a3aa22779bd0f453d11e0dee788dcf95b7be90c3b3b3a7fe535da503c381e346eb2a0b0e375ad726ee2a38919810d5c545edcea1b23109a3fb68e30c01cc704a9d23ae55d18cc9fdff02bd484d59f468d75a796657fdca59f55d4be7efd7378a31685334adc0cacaef9af5649da85dc6c5989cf8e2b9977a62a8ca8bc27782b1b3028a4de9a0e87dbab7879144e40a811f0b1b2880d26823c990adeb7df41116fcf6022a08d87ac7c63ecdff796dafa082e5cd85d6c3f17f8740ea1e9a0c886e0cd7074c45dbc2dc7b34c6859e06a0cee9b20ce43724a414eb77b0b804dffcc7bc44dab7fa02a3836eae396f9ede48d6deea333b0a990ebbcd1b336bb73d8e72c72e12449f1ca720a3bcd9788d1dcdde51214b771a1ca1389ebb5a05645acf97315651ae886ecd5f009a7cc62bfc49459b71fea3f8adc05d37129781ac9073eb83f1eeb1fc84a90c8316c36164259a7c24e5a200c353ebd7bf2324eff521680b218a8654b6df7b046afdc85a78cfee174a6e91978d4af6511d30799195df42886c8327dcc624c2912f83fe1bb6302ec71a8f098d5e056d89595c460062d29a5546e5ba77e0a179a848f033e11afc1a19897e83c2ab7eb58207222156767ebdb2e2426ae2c594c205da59650283b33cbf50a77d607de9e2ffe0f080fd773c7e03f20505dd0cb15cd8924cdd6b87d7f615bccd2eb47839561d79a02ca9cde0fde19b5a0c2a90bd4a0c7361bfdad5374ac42b5161115759cfa2ac08c16795ab52c84c540710b1d1d5006f2aba098c6b682a51f03ff5d79b6bce020ce726f7fa2e7685138087d609c05054a9f4c4568152e8900d866bd4a980b07d35b833647d1f4e26575d4de1c7a7ccf5cd119d6db4c72fb9c24e3a085ecdde521ff18bec6c16c931457cd8e26461d48b55c211a27ba498663b34ea0dcfd8cdfa12900fe8367abbeac8e4eb1a18036c9c1694935a573b61afc05c1265aafb6ef584e823b842764b71dca331837649a51d0c96cefec435835b8f4b5dac5d1f24be94d5378a1664efc1daf557015657adb77881c5d181cd9d1f1d3d96bf74d5167930285b6f98fef31bbef7378cf2f12c4c479f96076d8170d768dfd2fe823cd14d6d7059d75d9547ab22ada6fd1a364ae7629e6f7e466a4c8a49483e4555f6c0881fd2cee97923247f2ca839f88b1eda7c3b7c75f530c0fd60b85e8b10d4b58d7b8815bbf1e4f42a16b25225888bda247d46be3551325b606f61ce776a92f046884fd275e82d4c08761b60d698c5adde78ded62d8835a1b23b3ff96576b2c198f722e76ea22667388a44ed316ea6dc5be4bd84043572a2afa19cd9a84ef5ffc28fb0f689c4c2526cec261502f1e0af665cbdef50e3a669c0aa1364307c89d766d5869e2c9e414ca216735c01826eee4ea8bcb09b67a8dd8f7edb68536c6eefa0fa0d78f4a86bd70482d9852e48291d1e16ad11434779a27861af8192a64275084e7d9e0604c52073c3324b9577b088073ab270041d041cf5ff18831b80e00a273b6860059bec4a6c41902644ef923e890d558b5a96ef9eefe19de120735e98987a98d53a56e3226c576cd2ef486ae138ff3b62eae33ca91f8b77d3a98f583e863d4ebe53d0b3fa97c4768280593f935f6142595ed15057adf8b60148620493afeb5ff5de17b6ac26d5bbb7cf7f47132642ebe73de0051f073610b0c1eaef6749919cf0e87144c0d8f70eeabb7fe6c2e58f914e544e8be21c2f3a602d61cfcf01765e49cbcd0a6f9b1616ec56a4de6e52bc979840a842d9b2dd4b5d59d15b3ce85138bc98c1e254c84853b6726b6fdb7bc79e90d34be3dd86c4defbfac943880292fec0d995cdb5244514d11518efe79204d53c9cda4a487bf30e9ff7f286e536ac1fe9fa1a71f3eed0e47f8471e88db19fcd3e3197698969798f26d5c9c4b8a7b935a0faf395d2ba9ee8c57e13747ad4d01a2eeca7e853f9c5273fc161854c2e966f853a4888844442291ed0b3c59315f8cbae2c9a4af084d10cb4c7e640001b7f340132d80474c6daa0e009c380df0feb57d5eb1ed8b40cdf2446c8a424d48ebe5897d922e42f25b98836395db513e4904fc2521acca5303ac576454e602d4b35520736818a8468379000f8f30f9e37d05c7bc1f16ecc9acb0f8c630966775575a4064a770f7b53f7ca7ccc00bdb71195d53cf21b74820665220c05785b225b2cbe2855a5ae40b9bce9e1eddb78a9e4c0825fb47fff9e6f37a9554d9ee046cd18a301daee26ec5eef4f101256e0c59df35cbb5192f80162ba3937dbf3619987bf18b1d69d6e6e0c42fead7f0ed6d2cf54da78f874960e445a108b7bb0987cb9427e1023a1c85c272c10bca781f98c76e10673924e658e736cc544afc0cdecde8e58d14a18e4b742150751a46a14d90d710a9ea82266e46654bbc153685c195998b0923cce31350b79b2039f23855dc3ba11438b15cc03aaad9d31b5819c4b41234e93a306155479a6bd45df84e1cf9e8d8ea0e896d9288d2e48d8730d86bf8997c62a8378ad95925672defbaa1c9cba315ce1e64f8616b174b88c57ab780748ae96cdbe36dc4d79054fdd7bec3b40b1fc7b1266e197ca7fe41d0743ad9a8a10430a4e1ccedf8aa48623fffa2bfd330364b0e3aa1db7d9b9aa4ca8e17d93c916d6afe57d33f7b059b670bba34bceed51165ffc0dca6af532eb3ef976b296e975ce25b40ec639ca43593b25946ba82a819e8f1afa7dfa345f35cc08bf3e77302886caf08e1432445f67dc59c6985e7f8c9bbc8a68a3925e20c14bdd2b6922bc924321f5823df511834f2a29e4d7e320f963c7ad3a15222afa22a98375147fb3f4333f5b8c139a1045d3cc6de57b24a2341cc16b3dfe069a35865b852c2f84fd4ec28ec178fd0b9ff32e1e529bf3dc969ae17db1396c2cba74b6ad4b83207eab4b12c93604da7ebbd039bae1ea1cbf5c979870e8e87aec0c883e8b952bec1986760403b193e165fff20ff5160a434bd25a7cbecc4f8b9b7a55b41296f9609342b8a76afb6ab9891bd1742708a99f34a56efc139200f1b5fe157bb276240e7e2a0a0f4ea591ac0b24a21ccd1cc4ef6c8baa082dea23fe549901ecbe78c474b27543349059f9115a59139e45ee6f9ff4052385422c93861594fe989fa84d2821d63ea55d9327d7019e912f7ebaebf24bf2116ccc1a6a283c397ba3caa5ea8d44ac736783fb4ef27159570aef51156e90e694faa6d1a9e1921d8d1b187c3ea367f3308cfe1b7412a558bf3ce7ffef30f8927e496126e3efe171f4beef71bae80d363f5b73aa8f7a91282426ca3c7f088e42556c56545bd0de19696d7b60737658008fd63c23fefdcf55a335846b1a1daba80404b4fc487d19f32e3ad8681390f2c57a20974244fd112dd0c8830e41160d5d740599513ae0c03a908a008eb411968d53f5b9c1d8dd4f3f0365592e626f4f20168521a58739767b18cf2400ca6f697ccea4463aa90389092f35eca8a4b1b7c5da04283a67b0fb13f36047376bf3591aebd37abf508b366f5b6f5442f41c0572fc8ea15b5d92cc3479d018e57d72dbc1b03710dae0a3e27f92a6d96f0192b7d63af2827e693926c08f13039e8f8c9ec97d5ffb34e5ec25f1755964df048d22f48eed1756bf1660c619fb1a036901fd9ad5904ee354e90174b12ee8d4499e18f699f6f8bdcfa1959b5addba3f40eebc727594c7d267f5f123ed25db50eb98288c2d51416a120597f4ec0ebaa08a9f1afa7a92d63de9541d1d113c8d645bf0279db6e7e1d0ae71b785e47e14063ecfb148604d4b9e2ba9ac90744b6bfaab637e3e15d4eea24cb4e9c76d8efa750a7be5c5241a46c596fd39688b0dd52e540641c3f98d7095c6347ddebd31cce6193804607d34ff82f3e0dccc981a68e0d690a8b806ff757bb11") syz_emit_ethernet(0x2e, &(0x7f0000000000)={@empty, @broadcast, [{[], {0x8100, 0x1, 0x1, 0x4}}], {@arp={0x806, @ether_ipv4={0x1, 0x800, 0x6, 0x4, 0x9, @remote, @multicast1, @remote, @broadcast}}}}) syz_execute_func(&(0x7f0000000040)="0f5a60b006c4e1016bd7652fc4e1f8118100000080c4c11960183e673e0f01d9f2e1abf3ee660f148bf1ffffff") syz_extract_tcp_res(&(0x7f0000000080), 0x7fffffff, 0x7) csource_test.go:109: failed to build program: // autogenerated by syzkaller (https://github.com/google/syzkaller) #define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include static __thread int skip_segv; static __thread jmp_buf segv_env; static void segv_handler(int sig, siginfo_t* info, void* ctx) { uintptr_t addr = (uintptr_t)info->si_addr; const uintptr_t prog_start = 1 << 20; const uintptr_t prog_end = 100 << 20; int skip = __atomic_load_n(&skip_segv, __ATOMIC_RELAXED) != 0; int valid = addr < prog_start || addr > prog_end; if (sig == SIGBUS) { valid = 1; } if (skip && valid) { _longjmp(segv_env, 1); } exit(sig); } static void install_segv_handler(void) { struct sigaction sa; memset(&sa, 0, sizeof(sa)); sa.sa_sigaction = segv_handler; sa.sa_flags = SA_NODEFER | SA_SIGINFO; sigaction(SIGSEGV, &sa, NULL); sigaction(SIGBUS, &sa, NULL); } #define NONFAILING(...) ({ int ok = 1; __atomic_fetch_add(&skip_segv, 1, __ATOMIC_SEQ_CST); if (_setjmp(segv_env) == 0) { __VA_ARGS__; } else ok = 0; __atomic_fetch_sub(&skip_segv, 1, __ATOMIC_SEQ_CST); ok; }) static void kill_and_wait(int pid, int* status) { kill(pid, SIGKILL); while (waitpid(-1, status, 0) != pid) { } } static void sleep_ms(uint64_t ms) { usleep(ms * 1000); } static uint64_t current_time_ms(void) { struct timespec ts; if (clock_gettime(CLOCK_MONOTONIC, &ts)) exit(1); return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000; } static void use_temporary_dir(void) { char tmpdir_template[] = "./syzkaller.XXXXXX"; char* tmpdir = mkdtemp(tmpdir_template); if (!tmpdir) exit(1); if (chmod(tmpdir, 0777)) exit(1); if (chdir(tmpdir)) exit(1); } static void __attribute__((noinline)) remove_dir(const char* dir) { DIR* dp = opendir(dir); if (dp == NULL) { if (errno == EACCES) { if (rmdir(dir)) exit(1); return; } exit(1); } struct dirent* ep = 0; while ((ep = readdir(dp))) { if (strcmp(ep->d_name, ".") == 0 || strcmp(ep->d_name, "..") == 0) continue; char filename[FILENAME_MAX]; snprintf(filename, sizeof(filename), "%s/%s", dir, ep->d_name); struct stat st; if (lstat(filename, &st)) exit(1); if (S_ISDIR(st.st_mode)) { remove_dir(filename); continue; } if (unlink(filename)) exit(1); } closedir(dp); if (rmdir(dir)) exit(1); } static void thread_start(void* (*fn)(void*), void* arg) { pthread_t th; pthread_attr_t attr; pthread_attr_init(&attr); pthread_attr_setstacksize(&attr, 128 << 10); int i = 0; for (; i < 100; i++) { if (pthread_create(&th, &attr, fn, arg) == 0) { pthread_attr_destroy(&attr); return; } if (errno == EAGAIN) { usleep(50); continue; } break; } exit(1); } typedef struct { pthread_mutex_t mu; pthread_cond_t cv; int state; } event_t; static void event_init(event_t* ev) { if (pthread_mutex_init(&ev->mu, 0)) exit(1); if (pthread_cond_init(&ev->cv, 0)) exit(1); ev->state = 0; } static void event_reset(event_t* ev) { ev->state = 0; } static void event_set(event_t* ev) { pthread_mutex_lock(&ev->mu); if (ev->state) exit(1); ev->state = 1; pthread_mutex_unlock(&ev->mu); pthread_cond_broadcast(&ev->cv); } static void event_wait(event_t* ev) { pthread_mutex_lock(&ev->mu); while (!ev->state) pthread_cond_wait(&ev->cv, &ev->mu); pthread_mutex_unlock(&ev->mu); } static int event_isset(event_t* ev) { pthread_mutex_lock(&ev->mu); int res = ev->state; pthread_mutex_unlock(&ev->mu); return res; } static int event_timedwait(event_t* ev, uint64_t timeout) { uint64_t start = current_time_ms(); uint64_t now = start; pthread_mutex_lock(&ev->mu); for (;;) { if (ev->state) break; uint64_t remain = timeout - (now - start); struct timespec ts; ts.tv_sec = remain / 1000; ts.tv_nsec = (remain % 1000) * 1000 * 1000; pthread_cond_timedwait(&ev->cv, &ev->mu, &ts); now = current_time_ms(); if (now - start > timeout) break; } int res = ev->state; pthread_mutex_unlock(&ev->mu); return res; } #define BITMASK(bf_off,bf_len) (((1ull << (bf_len)) - 1) << (bf_off)) #define STORE_BY_BITMASK(type,htobe,addr,val,bf_off,bf_len) *(type*)(addr) = htobe((htobe(*(type*)(addr)) & ~BITMASK((bf_off), (bf_len))) | (((type)(val) << (bf_off)) & BITMASK((bf_off), (bf_len)))) static void sandbox_common() { struct rlimit rlim; rlim.rlim_cur = rlim.rlim_max = 128 << 20; setrlimit(RLIMIT_AS, &rlim); rlim.rlim_cur = rlim.rlim_max = 8 << 20; setrlimit(RLIMIT_MEMLOCK, &rlim); rlim.rlim_cur = rlim.rlim_max = 1 << 20; setrlimit(RLIMIT_FSIZE, &rlim); rlim.rlim_cur = rlim.rlim_max = 1 << 20; setrlimit(RLIMIT_STACK, &rlim); rlim.rlim_cur = rlim.rlim_max = 0; setrlimit(RLIMIT_CORE, &rlim); rlim.rlim_cur = rlim.rlim_max = 256; setrlimit(RLIMIT_NOFILE, &rlim); } static void loop(); static int do_sandbox_none(void) { sandbox_common(); loop(); return 0; } static long syz_execute_func(volatile long text) { ((void (*)(void))(text))(); return 0; } struct thread_t { int created, call; event_t ready, done; }; static struct thread_t threads[16]; static void execute_call(int call); static int running; static void* thr(void* arg) { struct thread_t* th = (struct thread_t*)arg; for (;;) { event_wait(&th->ready); event_reset(&th->ready); execute_call(th->call); __atomic_fetch_sub(&running, 1, __ATOMIC_RELAXED); event_set(&th->done); } return 0; } static void execute_one(void) { int i, call, thread; for (call = 0; call < 13; call++) { for (thread = 0; thread < (int)(sizeof(threads) / sizeof(threads[0])); thread++) { struct thread_t* th = &threads[thread]; if (!th->created) { th->created = 1; event_init(&th->ready); event_init(&th->done); event_set(&th->done); thread_start(thr, th); } if (!event_isset(&th->done)) continue; event_reset(&th->done); th->call = call; __atomic_fetch_add(&running, 1, __ATOMIC_RELAXED); event_set(&th->ready); event_timedwait(&th->done, 50); break; } } for (i = 0; i < 100 && __atomic_load_n(&running, __ATOMIC_RELAXED); i++) sleep_ms(1); } static void execute_one(void); #define WAIT_FLAGS 0 static void loop(void) { int iter = 0; for (;; iter++) { char cwdbuf[32]; sprintf(cwdbuf, "./%d", iter); if (mkdir(cwdbuf, 0777)) exit(1); int pid = fork(); if (pid < 0) exit(1); if (pid == 0) { if (chdir(cwdbuf)) exit(1); execute_one(); exit(0); } int status = 0; uint64_t start = current_time_ms(); for (;;) { if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid) break; sleep_ms(1); if (current_time_ms() - start < 5000) { continue; } kill_and_wait(pid, &status); break; } remove_dir(cwdbuf); } } uint64_t r[3] = {0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff}; void execute_call(int call) { intptr_t res = 0; switch (call) { case 0: NONFAILING(*(uint32_t*)0x10000000 = 0); NONFAILING(*(uint16_t*)0x10000004 = 4); NONFAILING(*(uint8_t*)0x10000006 = 1); NONFAILING(*(uint32_t*)0x10000040 = 8); syscall(SYS_getsockopt, 0xffffff9c, 0x84, 0x1e, 0x10000000, 0x10000040); break; case 1: NONFAILING(*(uint32_t*)0x10000080 = 0); NONFAILING(*(uint32_t*)0x10000084 = 0x7fff); NONFAILING(*(uint32_t*)0x100000c0 = 8); syscall(SYS_getsockopt, -1, 0x84, 0x19, 0x10000080, 0x100000c0); break; case 2: res = syscall(SYS_dup, -1); if (res != -1) r[0] = res; break; case 3: NONFAILING(*(uint32_t*)0x10000100 = 7); syscall(SYS_setsockopt, (intptr_t)r[0], 0x84, 8, 0x10000100, 4); break; case 4: NONFAILING(*(uint32_t*)0x10000540 = 0x10000140); NONFAILING(*(uint32_t*)0x10000544 = 0x95); NONFAILING(*(uint32_t*)0x10000548 = 0x10000200); NONFAILING(*(uint32_t*)0x1000054c = 0xb3); NONFAILING(*(uint32_t*)0x10000550 = 0x100002c0); NONFAILING(*(uint32_t*)0x10000554 = 0xac); NONFAILING(*(uint32_t*)0x10000558 = 0x10000380); NONFAILING(*(uint32_t*)0x1000055c = 0xb6); NONFAILING(*(uint32_t*)0x10000560 = 0x10000440); NONFAILING(*(uint32_t*)0x10000564 = 0xce); syscall(SYS_readv, (intptr_t)r[0], 0x10000540, 5); break; case 5: syscall(SYS_thr_wake, -1); break; case 6: res = syscall(SYS_socket, 2, 2, 0x88); if (res != -1) r[1] = res; break; case 7: syscall(SYS_freebsd12_closefrom, (intptr_t)r[1]); break; case 8: NONFAILING(memcpy((void*)0x10000580, "./file0\000", 8)); res = syscall(SYS_open, 0x10000580, 4, 0x40); if (res != -1) r[2] = res; break; case 9: NONFAILING(memcpy((void*)0x100005c0, "\x2a\x36\x8a\x90\xb4\x88\xd0\x4e\xe1\xec\xcd\x13\x97\x78\x04\x3b\x00\xa6\xf8\x1a\x36\x27\xb5\x93\xb0\xdf\xce\x33\x26\x5c\xda\x8f\xba\x8b\x0f\xa5\x38\xb3\xe3\x64\xad\x1d\x1f\x7d\xe1\x01\x1c\x63\xf5\x92\xa6\x4d\xd0\xec\x95\x3f\x9c\x05\x0f\x99\x1f\x42\xd2\x4d\x7b\xc4\x7c\x4d\x5b\xf3\x23\xe3\x93\x60\x5e\x59\xa1\xeb\x5b\xc4\xe9\x48\xf8\x38\x90\x91\x1e\xd3\x5b\x53\xa2\xb0\xd6\x3d\xb7\x9d\xc2\x1d\x61\x90\xf8\xb4\x34\xd6\xff\x85\xe5\x4f\xb9\xa2\x8a\x75\x66\xd1\xa2\x43\x37\xe7\x2e\x82\xac\xc9\xe5\x18\x33\x9a\xca\xc7\xdd\x89\x60\xa1\xc9\xc5\xcb\x3d\xa9\xe6\xbc\x0b\x69\x7e\x9d\xbb\xc6\x0f\xa8\xb7\x2c\x37\x19\x28\x6b\xf4\x4c\x2e\x8f\xc8\x35\x6e\x91\x25\xea\xe9\xbe\xd2\x16\xf3\x49\xc2\x92\xc9\x89\xd7\xdc\xd2\x52\xdf\xb7\x9c\x4f\xdb\xdc\x86\x51\x09\xf1\xe3\xcf\x9c\xd6\x7c\xfa\x8b\xab\xb7\xd3\x62\x7c\xe0\x08\x09\x10\xc5\x75\x5c\x92\xcb\xb2\xc1\x59\x17\x2a\x65\xea\x8a\x20\x85\xf4\xce\x10\xe1\x43\x6e\xf2\xf7\xd6\xf1\xdb\x70\x2a\x38\x7c\xd3\x56\x81\x29\x33\x31\xbd\x1b\xdb\xd6\x90\x27\x4a\x7c\x37\x2f\x84\xe4\xd5\x74\x87\x91\xd7\x07\xee\x5c\x12\x7e\xda\x8b\x84\x59\x6b\x0c\x10\x89\x0c\x88\x10\x06\xbe\xb3\x8a\xd5\x6d\x13\x9d\x8c\x74\xf1\x4f\x35\x98\xde\x55\x1e\xe3\xa1\x34\x66\xe6\x7c\xb3\xd2\xc5\xfd\x90\x90\x61\x52\x20\x58\xff\xbe\x9a\xe4\x31\x32\x55\x44\xc8\x94\xb9\x84\x1a\x4c\x25\x36\x32\xa3\x32\xc6\xe0\xd8\x81\x64\x5f\x90\xb6\x33\x7d\xb9\x9b\x7f\xad\x1b\xd1\x62\xf7\x3d\x11\xce\x5e\x57\xd5\xf3\x21\xfb\x68\xa7\x95\xc9\x90\x66\x2a\x35\x70\x6a\xf8\x45\xb5\x38\x3f\xe5\x0b\xa8\x63\x76\x13\xdd\x43\xaa\x7c\xf2\x00\x20\x35\x52\x18\xe0\x60\xaf\x26\x58\x86\x63\x49\x19\x7f\x30\xc8\x35\x35\x1b\xd6\x96\x83\xba\xaa\xb8\xbe\x6b\x4d\xa0\x4f\xb3\x5a\x42\x33\x14\xfa\xb6\x10\xb8\xd1\xcf\x04\x40\xfe\xdb\x28\xa5\xe1\x95\x84\xef\x78\x67\xbd\x96\x2b\xa4\xed\xe5\x13\xaf\x03\xdd\xa6\x69\xf7\x6c\x67\xd2\x8f\xb5\x07\xd5\x76\x2c\x61\xd5\x28\xf1\xcf\x3a\x7c\x56\x3e\xee\x1c\x04\x10\x62\x54\xce\x3f\xd8\x21\xc1\x7a\x0d\xef\xc3\x7d\x79\xa5\xde\x7e\xf9\x35\x2c\x7b\x41\x1c\x95\x39\x58\xd2\x54\xd0\xd3\xe5\xae\x61\x8a\x68\xa5\x3e\x45\x80\x9d\x49\x3c\x47\x4a\x20\x8c\xcc\x0f\x17\x0d\xf4\x83\x6d\x05\x93\xb7\xb7\xce\x87\x4f\xa0\x1f\xe0\x41\x5a\x59\x4f\x94\x1c\x31\xf0\x78\x4a\xad\x39\x4f\x06\xb8\x53\x70\x29\x55\x5c\xcc\x73\xea\xab\x0b\x36\x84\x6f\xe5\xcc\x6e\x92\xdb\x0c\x90\xa6\x2d\x1d\x36\xc3\x82\xc3\x51\x92\x17\x89\xdf\xbe\x0f\x60\xb1\x3d\xb0\x81\x4a\xaf\x4f\xa6\xf8\x13\xa7\xcf\x2a\xd1\x2e\xbe\x10\x50\xee\xf9\x27\x68\xc3\x13\x71\x8d\x8d\xb2\x02\xe3\xd1\x09\x3d\xcf\x59\x33\x45\x1e\xfd\x9b\x72\xee\x4e\xf7\x5d\xfc\x0e\xa0\xaf\xff\xb8\x1b\xbe\xe5\x50\x38\x2b\x6b\x12\x12\xce\xa0\x97\xb7\x09\xae\xc7\xc0\xa8\x57\x99\x12\x7d\x01\x37\x6f\x7b\xd6\xf2\x55\x73\x29\x72\xf8\x89\xb6\x84\x3f\x61\x54\x78\xee\x23\x12\x47\x37\xf8\x13\xb1\x8f\x31\x33\xaf\x12\xb4\xe4\x1e\x70\xbe\xa0\x58\xb0\x0a\x5f\x96\x5e\xd2\x37\x7b\x48\x91\x6b\xc2\xa7\x16\x2a\xdb\xf7\xbc\x9c\xa1\x1a\xea\xaf\x88\xc2\xf5\x22\x9a\xf6\xdd\x38\x61\x57\x4a\x0d\x5d\x5a\xe4\x82\xf2\xd7\xe8\x6d\x17\x20\x05\xcc\xa5\x65\xb1\x2b\x19\x9a\x7d\x81\x08\x7d\x85\x77\x6d\x61\x39\x40\xb4\x87\x35\x26\x6d\x45\xa4\xad\x11\xe1\x68\xe8\x9b\x89\x3e\x65\x0b\x98\x4b\x48\x3a\xbb\x31\x8f\x43\x2f\x13\xc6\x1f\x26\xf3\xde\xab\xc6\xb4\x5d\xcf\x5f\xf4\x57\x9d\xa8\x9a\x9d\x23\x25\x1d\x1a\x6b\xec\x12\x2c\xb2\x10\xfc\x3a\xfa\x89\x10\x23\x95\xe1\xd2\x6b\x14\xca\x41\x80\xc1\xb6\xfe\x0b\x30\x00\x04\x95\x50\x28\x3b\x61\x8a\xb1\xfd\x6b\x16\x58\x55\xb2\x97\xd9\x45\x7a\xc5\x49\x46\xfb\x99\xe6\xf0\xd8\x87\x2d\xb8\x79\x34\x34\x7b\x6d\x9a\x38\xa7\x31\xbf\x8b\xd0\x8f\x2a\x7a\x7d\x80\xd4\xcf\x24\xfa\x9a\x16\xc2\x09\xa1\x84\x94\x13\x3d\x6d\xd0\xd2\x92\xef\xeb\xa7\x87\x2c\x4d\x7b\xdf\xaf\xd4\x16\xe6\x34\xcf\x90\xab\x4d\xc9\xbc\xcc\x64\x32\x27\xa0\x55\x52\xee\xe0\xf9\x16\xec\x20\x2d\xcb\x01\x1c\x83\x94\xb1\x09\x96\x87\x3a\x0a\x4b\x7a\xee\x15\x14\xf5\x95\xd2\x32\x89\xa3\xbf\x62\x08\x5b\x0a\xee\xa0\x00\x92\x06\xe7\xa7\x06\x1a\xd8\x66\x35\x22\x41\x70\x8a\xcb\xcf\x3c\x2f\xc0\xfd\xca\xaa\xa8\xb3\xbe\x8e\x51\x0b\x99\xe0\x4b\x96\xdd\xaf\xa9\xf8\x48\x3b\x7a\x56\x8c\x5e\xba\xdd\xad\x56\x77\xd9\x14\x4a\x27\x0d\x04\x44\xae\xa3\xc0\x77\x5d\x24\x1d\x79\xba\xea\x30\xdc\x4b\xb1\x9a\x71\x24\x71\xf1\x12\x83\x8c\x75\x25\x49\x6d\x4a\x8f\xa6\x66\x58\x61\x03\x47\xd4\x90\xaf\x85\x30\x5c\xea\xbf\x0f\x35\xac\x27\x7f\x2e\xf1\xb6\xa8\xe5\x81\x3c\xe0\xbe\xa5\x87\xe6\x27\xd7\x25\xf1\xdb\x12\x41\x22\x2a\xcd\x41\xe1\x6c\x8a\x32\xbd\xb4\x07\x78\xd4\xa1\x0f\x87\xb1\xe9\x0e\x00\x6d\xfc\x03\xd2\x93\x45\x89\xd2\x59\x65\x24\x0e\xe9\xc2\x14\x19\xa2\xaa\x5b\xd8\xf3\xfc\xd3\x20\x8f\x9b\x52\x15\x55\x13\xa6\xda\x73\x46\x8d\xc0\x70\x31\x02\xbc\xca\x0e\xba\x18\xe8\x8c\x19\xda\x64\xab\x5c\x6b\xf6\xcb\x81\x09\x73\x01\x53\x69\x33\x32\xf7\xe1\x60\x86\x27\x19\xdc\x08\x17\x5e\xd0\x74\xf5\xbf\x28\x87\x70\x55\x01\x33\x1c\xf7\x52\x54\xfc\xe0\xe1\x45\xac\x22\x41\x87\x52\x93\x03\x6f\x2a\xa9\x65\x92\x19\x40\x73\xd0\x47\x54\xc2\x6f\x19\xe7\x76\x33\x32\xb4\x3d\x02\x87\xa2\x83\x47\xd5\x15\x5b\xac\xfd\x32\x62\x8f\x50\x0d\x9e\x9c\x04\xf5\x36\x9f\x63\x17\xe6\x06\xe4\x22\xf9\x8c\x48\xb1\x1f\x75\x5b\x2b\x0f\xdc\x79\x49\x4a\x76\x97\x00\xd3\x5a\x88\xa3\x30\xf0\x2c\xab\x2f\xb7\xb6\x50\x49\xe2\xd1\xe3\x50\xa6\xe0\x2d\x5d\x54\xac\x7c\x85\xf2\x68\xc0\xea\xf7\x70\x71\xd5\xac\xab\xed\x99\x42\x90\x30\xd0\x0b\x30\xc4\xca\xa2\x1c\xe3\x22\xd4\xf7\x80\xe8\x92\x20\x11\x29\xff\x77\x2d\x22\xcc\x4d\x4c\x27\x4b\x47\x99\x48\xd2\x2a\xcf\xc1\x76\x0b\x29\x17\xff\x30\x8e\x9a\x3a\xa2\x27\x79\xbd\x0f\x45\x3d\x11\xe0\xde\xe7\x88\xdc\xf9\x5b\x7b\xe9\x0c\x3b\x3b\x3a\x7f\xe5\x35\xda\x50\x3c\x38\x1e\x34\x6e\xb2\xa0\xb0\xe3\x75\xad\x72\x6e\xe2\xa3\x89\x19\x81\x0d\x5c\x54\x5e\xdc\xea\x1b\x23\x10\x9a\x3f\xb6\x8e\x30\xc0\x1c\xc7\x04\xa9\xd2\x3a\xe5\x5d\x18\xcc\x9f\xdf\xf0\x2b\xd4\x84\xd5\x9f\x46\x8d\x75\xa7\x96\x65\x7f\xdc\xa5\x9f\x55\xd4\xbe\x7e\xfd\x73\x78\xa3\x16\x85\x33\x4a\xdc\x0c\xac\xae\xf9\xaf\x56\x49\xda\x85\xdc\x6c\x59\x89\xcf\x8e\x2b\x99\x77\xa6\x2a\x8c\xa8\xbc\x27\x78\x2b\x1b\x30\x28\xa4\xde\x9a\x0e\x87\xdb\xab\x78\x79\x14\x4e\x40\xa8\x11\xf0\xb1\xb2\x88\x0d\x26\x82\x3c\x99\x0a\xde\xb7\xdf\x41\x11\x6f\xcf\x60\x22\xa0\x8d\x87\xac\x7c\x63\xec\xdf\xf7\x96\xda\xfa\x08\x2e\x5c\xd8\x5d\x6c\x3f\x17\xf8\x74\x0e\xa1\xe9\xa0\xc8\x86\xe0\xcd\x70\x74\xc4\x5d\xbc\x2d\xc7\xb3\x4c\x68\x59\xe0\x6a\x0c\xee\x9b\x20\xce\x43\x72\x4a\x41\x4e\xb7\x7b\x0b\x80\x4d\xff\xcc\x7b\xc4\x4d\xab\x7f\xa0\x2a\x38\x36\xea\xe3\x96\xf9\xed\xe4\x8d\x6d\xee\xa3\x33\xb0\xa9\x90\xeb\xbc\xd1\xb3\x36\xbb\x73\xd8\xe7\x2c\x72\xe1\x24\x49\xf1\xca\x72\x0a\x3b\xcd\x97\x88\xd1\xdc\xdd\xe5\x12\x14\xb7\x71\xa1\xca\x13\x89\xeb\xb5\xa0\x56\x45\xac\xf9\x73\x15\x65\x1a\xe8\x86\xec\xd5\xf0\x09\xa7\xcc\x62\xbf\xc4\x94\x59\xb7\x1f\xea\x3f\x8a\xdc\x05\xd3\x71\x29\x78\x1a\xc9\x07\x3e\xb8\x3f\x1e\xeb\x1f\xc8\x4a\x90\xc8\x31\x6c\x36\x16\x42\x59\xa7\xc2\x4e\x5a\x20\x0c\x35\x3e\xbd\x7b\xf2\x32\x4e\xff\x52\x16\x80\xb2\x18\xa8\x65\x4b\x6d\xf7\xb0\x46\xaf\xdc\x85\xa7\x8c\xfe\xe1\x74\xa6\xe9\x19\x78\xd4\xaf\x65\x11\xd3\x07\x99\x19\x5d\xf4\x28\x86\xc8\x32\x7d\xcc\x62\x4c\x29\x12\xf8\x3f\xe1\xbb\x63\x02\xec\x71\xa8\xf0\x98\xd5\xe0\x56\xd8\x95\x95\xc4\x60\x06\x2d\x29\xa5\x54\x6e\x5b\xa7\x7e\x0a\x17\x9a\x84\x8f\x03\x3e\x11\xaf\xc1\xa1\x98\x97\xe8\x3c\x2a\xb7\xeb\x58\x20\x72\x22\x15\x67\x67\xeb\xdb\x2e\x24\x26\xae\x2c\x59\x4c\x20\x5d\xa5\x96\x50\x28\x3b\x33\xcb\xf5\x0a\x77\xd6\x07\xde\x9e\x2f\xfe\x0f\x08\x0f\xd7\x73\xc7\xe0\x3f\x20\x50\x5d\xd0\xcb\x15\xcd\x89\x24\xcd\xd6\xb8\x7d\x7f\x61\x5b\xcc\xd2\xeb\x47\x83\x95\x61\xd7\x9a\x02\xca\x9c\xde\x0f\xde\x19\xb5\xa0\xc2\xa9\x0b\xd4\xa0\xc7\x36\x1b\xfd\xad\x53\x74\xac\x42\xb5\x16\x11\x15\x75\x9c\xfa\x2a\xc0\x8c\x16\x79\x5a\xb5\x2c\x84\xc5\x40\x71\x0b\x1d\x1d\x50\x06\xf2\xab\xa0\x98\xc6\xb6\x82\xa5\x1f\x03\xff\x5d\x79\xb6\xbc\xe0\x20\xce\x72\x6f\x7f\xa2\xe7\x68\x51\x38\x08\x7d\x60\x9c\x05\x05\x4a\x9f\x4c\x45\x68\x15\x2e\x89\x00\xd8\x66\xbd\x4a\x98\x0b\x07\xd3\x5b\x83\x36\x47\xd1\xf4\xe2\x65\x75\xd4\xde\x1c\x7a\x7c\xcf\x5c\xd1\x19\xd6\xdb\x4c\x72\xfb\x9c\x24\xe3\xa0\x85\xec\xdd\xe5\x21\xff\x18\xbe\xc6\xc1\x6c\x93\x14\x57\xcd\x8e\x26\x46\x1d\x48\xb5\x5c\x21\x1a\x27\xba\x49\x86\x63\xb3\x4e\xa0\xdc\xfd\x8c\xdf\xa1\x29\x00\xfe\x83\x67\xab\xbe\xac\x8e\x4e\xb1\xa1\x80\x36\xc9\xc1\x69\x49\x35\xa5\x73\xb6\x1a\xfc\x05\xc1\x26\x5a\xaf\xb6\xef\x58\x4e\x82\x3b\x84\x27\x64\xb7\x1d\xca\x33\x18\x37\x64\x9a\x51\xd0\xc9\x6c\xef\xec\x43\x58\x35\xb8\xf4\xb5\xda\xc5\xd1\xf2\x4b\xe9\x4d\x53\x78\xa1\x66\x4e\xfc\x1d\xaf\x55\x70\x15\x65\x7a\xdb\x77\x88\x1c\x5d\x18\x1c\xd9\xd1\xf1\xd3\xd9\x6b\xf7\x4d\x51\x67\x93\x02\x85\xb6\xf9\x8f\xef\x31\xbb\xef\x73\x78\xcf\x2f\x12\xc4\xc4\x79\xf9\x60\x76\xd8\x17\x0d\x76\x8d\xfd\x2f\xe8\x23\xcd\x14\xd6\xd7\x05\x9d\x75\xd9\x54\x7a\xb2\x2a\xda\x6f\xd1\xa3\x64\xae\x76\x29\xe6\xf7\xe4\x66\xa4\xc8\xa4\x94\x83\xe4\x55\x5f\x6c\x08\x81\xfd\x2c\xee\x97\x92\x32\x47\xf2\xca\x83\x9f\x88\xb1\xed\xa7\xc3\xb7\xc7\x5f\x53\x0c\x0f\xd6\x0b\x85\xe8\xb1\x0d\x4b\x58\xd7\xb8\x81\x5b\xbf\x1e\x4f\x42\xa1\x6b\x25\x22\x58\x88\xbd\xa2\x47\xd4\x6b\xe3\x55\x13\x25\xb6\x06\xf6\x1c\xe7\x76\xa9\x2f\x04\x68\x84\xfd\x27\x5e\x82\xd4\xc0\x87\x61\xb6\x0d\x69\x8c\x5a\xdd\xe7\x8d\xed\x62\xd8\x83\x5a\x1b\x23\xb3\xff\x96\x57\x6b\x2c\x19\x8f\x72\x2e\x76\xea\x22\x66\x73\x88\xa4\x4e\xd3\x16\xea\x6d\xc5\xbe\x4b\xd8\x40\x43\x57\x2a\x2a\xfa\x19\xcd\x9a\x84\xef\x5f\xfc\x28\xfb\x0f\x68\x9c\x4c\x25\x26\xce\xc2\x61\x50\x2f\x1e\x0a\xf6\x65\xcb\xde\xf5\x0e\x3a\x66\x9c\x0a\xa1\x36\x43\x07\xc8\x9d\x76\x6d\x58\x69\xe2\xc9\xe4\x14\xca\x21\x67\x35\xc0\x18\x26\xee\xe4\xea\x8b\xcb\x09\xb6\x7a\x8d\xd8\xf7\xed\xb6\x85\x36\xc6\xee\xfa\x0f\xa0\xd7\x8f\x4a\x86\xbd\x70\x48\x2d\x98\x52\xe4\x82\x91\xd1\xe1\x6a\xd1\x14\x34\x77\x9a\x27\x86\x1a\xf8\x19\x2a\x64\x27\x50\x84\xe7\xd9\xe0\x60\x4c\x52\x07\x3c\x33\x24\xb9\x57\x7b\x08\x80\x73\xab\x27\x00\x41\xd0\x41\xcf\x5f\xf1\x88\x31\xb8\x0e\x00\xa2\x73\xb6\x86\x00\x59\xbe\xc4\xa6\xc4\x19\x02\x64\x4e\xf9\x23\xe8\x90\xd5\x58\xb5\xa9\x6e\xf9\xee\xfe\x19\xde\x12\x07\x35\xe9\x89\x87\xa9\x8d\x53\xa5\x6e\x32\x26\xc5\x76\xcd\x2e\xf4\x86\xae\x13\x8f\xf3\xb6\x2e\xae\x33\xca\x91\xf8\xb7\x7d\x3a\x98\xf5\x83\xe8\x63\xd4\xeb\xe5\x3d\x0b\x3f\xa9\x7c\x47\x68\x28\x05\x93\xf9\x35\xf6\x14\x25\x95\xed\x15\x05\x7a\xdf\x8b\x60\x14\x86\x20\x49\x3a\xfe\xb5\xff\x5d\xe1\x7b\x6a\xc2\x6d\x5b\xbb\x7c\xf7\xf4\x71\x32\x64\x2e\xbe\x73\xde\x00\x51\xf0\x73\x61\x0b\x0c\x1e\xae\xf6\x74\x99\x19\xcf\x0e\x87\x14\x4c\x0d\x8f\x70\xee\xab\xb7\xfe\x6c\x2e\x58\xf9\x14\xe5\x44\xe8\xbe\x21\xc2\xf3\xa6\x02\xd6\x1c\xfc\xf0\x17\x65\xe4\x9c\xbc\xd0\xa6\xf9\xb1\x61\x6e\xc5\x6a\x4d\xe6\xe5\x2b\xc9\x79\x84\x0a\x84\x2d\x9b\x2d\xd4\xb5\xd5\x9d\x15\xb3\xce\x85\x13\x8b\xc9\x8c\x1e\x25\x4c\x84\x85\x3b\x67\x26\xb6\xfd\xb7\xbc\x79\xe9\x0d\x34\xbe\x3d\xd8\x6c\x4d\xef\xbf\xac\x94\x38\x80\x29\x2f\xec\x0d\x99\x5c\xdb\x52\x44\x51\x4d\x11\x51\x8e\xfe\x79\x20\x4d\x53\xc9\xcd\xa4\xa4\x87\xbf\x30\xe9\xff\x7f\x28\x6e\x53\x6a\xc1\xfe\x9f\xa1\xa7\x1f\x3e\xed\x0e\x47\xf8\x47\x1e\x88\xdb\x19\xfc\xd3\xe3\x19\x76\x98\x96\x97\x98\xf2\x6d\x5c\x9c\x4b\x8a\x7b\x93\x5a\x0f\xaf\x39\x5d\x2b\xa9\xee\x8c\x57\xe1\x37\x47\xad\x4d\x01\xa2\xee\xca\x7e\x85\x3f\x9c\x52\x73\xfc\x16\x18\x54\xc2\xe9\x66\xf8\x53\xa4\x88\x88\x44\x44\x22\x91\xed\x0b\x3c\x59\x31\x5f\x8c\xba\xe2\xc9\xa4\xaf\x08\x4d\x10\xcb\x4c\x7e\x64\x00\x01\xb7\xf3\x40\x13\x2d\x80\x47\x4c\x6d\xaa\x0e\x00\x9c\x38\x0d\xf0\xfe\xb5\x7d\x5e\xb1\xed\x8b\x40\xcd\xf2\x44\x6c\x8a\x42\x4d\x48\xeb\xe5\x89\x7d\x92\x2e\x42\xf2\x5b\x98\x83\x63\x95\xdb\x51\x3e\x49\x04\xfc\x25\x21\xac\xca\x53\x03\xac\x57\x64\x54\xe6\x02\xd4\xb3\x55\x20\x73\x68\x18\xa8\x46\x83\x79\x00\x0f\x8f\x30\xf9\xe3\x7d\x05\xc7\xbc\x1f\x16\xec\xc9\xac\xb0\xf8\xc6\x30\x96\x67\x75\x57\x5a\x40\x64\xa7\x70\xf7\xb5\x3f\x7c\xa7\xcc\xc0\x0b\xdb\x71\x19\x5d\x53\xcf\x21\xb7\x48\x20\x66\x52\x20\xc0\x57\x85\xb2\x25\xb2\xcb\xe2\x85\x5a\x5a\xe4\x0b\x9b\xce\x9e\x1e\xdd\xb7\x8a\x9e\x4c\x08\x25\xfb\x47\xff\xf9\xe6\xf3\x7a\x95\x54\xd9\xee\x04\x6c\xd1\x8a\x30\x1d\xae\xe2\x6e\xc5\xee\xf4\xf1\x01\x25\x6e\x0c\x59\xdf\x35\xcb\xb5\x19\x2f\x80\x16\x2b\xa3\x93\x7d\xbf\x36\x19\x98\x7b\xf1\x8b\x1d\x69\xd6\xe6\xe0\xc4\x2f\xea\xd7\xf0\xed\x6d\x2c\xf5\x4d\xa7\x8f\x87\x49\x60\xe4\x45\xa1\x08\xb7\xbb\x09\x87\xcb\x94\x27\xe1\x02\x3a\x1c\x85\xc2\x72\xc1\x0b\xca\x78\x1f\x98\xc7\x6e\x10\x67\x39\x24\xe6\x58\xe7\x36\xcc\x54\x4a\xfc\x0c\xde\xcd\xe8\xe5\x8d\x14\xa1\x8e\x4b\x74\x21\x50\x75\x1a\x46\xa1\x4d\x90\xd7\x10\xa9\xea\x82\x26\x6e\x46\x65\x4b\xbc\x15\x36\x85\xc1\x95\x99\x8b\x09\x23\xcc\xe3\x13\x50\xb7\x9b\x20\x39\xf2\x38\x55\xdc\x3b\xa1\x14\x38\xb1\x5c\xc0\x3a\xaa\xd9\xd3\x1b\x58\x19\xc4\xb4\x12\x34\xe9\x3a\x30\x61\x55\x47\x9a\x6b\xd4\x5d\xf8\x4e\x1c\xf9\xe8\xd8\xea\x0e\x89\x6d\x92\x88\xd2\xe4\x8d\x87\x30\xd8\x6b\xf8\x99\x7c\x62\xa8\x37\x8a\xd9\x59\x25\x67\x2d\xef\xba\xa1\xc9\xcb\xa3\x15\xce\x1e\x64\xf8\x61\x6b\x17\x4b\x88\xc5\x7a\xb7\x80\x74\x8a\xe9\x6c\xdb\xe3\x6d\xc4\xd7\x90\x54\xfd\xd7\xbe\xc3\xb4\x0b\x1f\xc7\xb1\x26\x6e\x19\x7c\xa7\xfe\x41\xd0\x74\x3a\xd9\xa8\xa1\x04\x30\xa4\xe1\xcc\xed\xf8\xaa\x48\x62\x3f\xff\xa2\xbf\xd3\x30\x36\x4b\x0e\x3a\xa1\xdb\x7d\x9b\x9a\xa4\xca\x8e\x17\xd9\x3c\x91\x6d\x6a\xfe\x57\xd3\x3f\x7b\x05\x9b\x67\x0b\xba\x34\xbc\xee\xd5\x11\x65\xff\xc0\xdc\xa6\xaf\x53\x2e\xb3\xef\x97\x6b\x29\x6e\x97\x5c\xe2\x5b\x40\xec\x63\x9c\xa4\x35\x93\xb2\x59\x46\xba\x82\xa8\x19\xe8\xf1\xaf\xa7\xdf\xa3\x45\xf3\x5c\xc0\x8b\xf3\xe7\x73\x02\x88\x6c\xaf\x08\xe1\x43\x24\x45\xf6\x7d\xc5\x9c\x69\x85\xe7\xf8\xc9\xbb\xc8\xa6\x8a\x39\x25\xe2\x0c\x14\xbd\xd2\xb6\x92\x2b\xc9\x24\x32\x1f\x58\x23\xdf\x51\x18\x34\xf2\xa2\x9e\x4d\x7e\x32\x0f\x96\x3c\x7a\xd3\xa1\x52\x22\xaf\xa2\x2a\x98\x37\x51\x47\xfb\x3f\x43\x33\xf5\xb8\xc1\x39\xa1\x04\x5d\x3c\xc6\xde\x57\xb2\x4a\x23\x41\xcc\x16\xb3\xdf\xe0\x69\xa3\x58\x65\xb8\x52\xc2\xf8\x4f\xd4\xec\x28\xec\x17\x8f\xd0\xb9\xff\x32\xe1\xe5\x29\xbf\x3d\xc9\x69\xae\x17\xdb\x13\x96\xc2\xcb\xa7\x4b\x6a\xd4\xb8\x32\x07\xea\xb4\xb1\x2c\x93\x60\x4d\xa7\xeb\xbd\x03\x9b\xae\x1e\xa1\xcb\xf5\xc9\x79\x87\x0e\x8e\x87\xae\xc0\xc8\x83\xe8\xb9\x52\xbe\xc1\x98\x67\x60\x40\x3b\x19\x3e\x16\x5f\xff\x20\xff\x51\x60\xa4\x34\xbd\x25\xa7\xcb\xec\xc4\xf8\xb9\xb7\xa5\x5b\x41\x29\x6f\x96\x09\x34\x2b\x8a\x76\xaf\xb6\xab\x98\x91\xbd\x17\x42\x70\x8a\x99\xf3\x4a\x56\xef\xc1\x39\x20\x0f\x1b\x5f\xe1\x57\xbb\x27\x62\x40\xe7\xe2\xa0\xa0\xf4\xea\x59\x1a\xc0\xb2\x4a\x21\xcc\xd1\xcc\x4e\xf6\xc8\xba\xa0\x82\xde\xa2\x3f\xe5\x49\x90\x1e\xcb\xe7\x8c\x47\x4b\x27\x54\x33\x49\x05\x9f\x91\x15\xa5\x91\x39\xe4\x5e\xe6\xf9\xff\x40\x52\x38\x54\x22\xc9\x38\x61\x59\x4f\xe9\x89\xfa\x84\xd2\x82\x1d\x63\xea\x55\xd9\x32\x7d\x70\x19\xe9\x12\xf7\xeb\xae\xbf\x24\xbf\x21\x16\xcc\xc1\xa6\xa2\x83\xc3\x97\xba\x3c\xaa\x5e\xa8\xd4\x4a\xc7\x36\x78\x3f\xb4\xef\x27\x15\x95\x70\xae\xf5\x11\x56\xe9\x0e\x69\x4f\xaa\x6d\x1a\x9e\x19\x21\xd8\xd1\xb1\x87\xc3\xea\x36\x7f\x33\x08\xcf\xe1\xb7\x41\x2a\x55\x8b\xf3\xce\x7f\xfe\xf3\x0f\x89\x27\xe4\x96\x12\x6e\x3e\xfe\x17\x1f\x4b\xee\xf7\x1b\xae\x80\xd3\x63\xf5\xb7\x3a\xa8\xf7\xa9\x12\x82\x42\x6c\xa3\xc7\xf0\x88\xe4\x25\x56\xc5\x65\x45\xbd\x0d\xe1\x96\x96\xd7\xb6\x07\x37\x65\x80\x08\xfd\x63\xc2\x3f\xef\xdc\xf5\x5a\x33\x58\x46\xb1\xa1\xda\xba\x80\x40\x4b\x4f\xc4\x87\xd1\x9f\x32\xe3\xad\x86\x81\x39\x0f\x2c\x57\xa2\x09\x74\x24\x4f\xd1\x12\xdd\x0c\x88\x30\xe4\x11\x60\xd5\xd7\x40\x59\x95\x13\xae\x0c\x03\xa9\x08\xa0\x08\xeb\x41\x19\x68\xd5\x3f\x5b\x9c\x1d\x8d\xd4\xf3\xf0\x36\x55\x92\xe6\x26\xf4\xf2\x01\x68\x52\x1a\x58\x73\x97\x67\xb1\x8c\xf2\x40\x0c\xa6\xf6\x97\xcc\xea\x44\x63\xaa\x90\x38\x90\x92\xf3\x5e\xca\x8a\x4b\x1b\x7c\x5d\xa0\x42\x83\xa6\x7b\x0f\xb1\x3f\x36\x04\x73\x76\xbf\x35\x91\xae\xbd\x37\xab\xf5\x08\xb3\x66\xf5\xb6\xf5\x44\x2f\x41\xc0\x57\x2f\xc8\xea\x15\xb5\xd9\x2c\xc3\x47\x9d\x01\x8e\x57\xd7\x2d\xbc\x1b\x03\x71\x0d\xae\x0a\x3e\x27\xf9\x2a\x6d\x96\xf0\x19\x2b\x7d\x63\xaf\x28\x27\xe6\x93\x92\x6c\x08\xf1\x30\x39\xe8\xf8\xc9\xec\x97\xd5\xff\xb3\x4e\x5e\xc2\x5f\x17\x55\x96\x4d\xf0\x48\xd2\x2f\x48\xee\xd1\x75\x6b\xf1\x66\x0c\x61\x9f\xb1\xa0\x36\x90\x1f\xd9\xad\x59\x04\xee\x35\x4e\x90\x17\x4b\x12\xee\x8d\x44\x99\xe1\x8f\x69\x9f\x6f\x8b\xdc\xfa\x19\x59\xb5\xad\xdb\xa3\xf4\x0e\xeb\xc7\x27\x59\x4c\x7d\x26\x7f\x5f\x12\x3e\xd2\x5d\xb5\x0e\xb9\x82\x88\xc2\xd5\x14\x16\xa1\x20\x59\x7f\x4e\xc0\xeb\xaa\x08\xa9\xf1\xaf\xa7\xa9\x2d\x63\xde\x95\x41\xd1\xd1\x13\xc8\xd6\x45\xbf\x02\x79\xdb\x6e\x7e\x1d\x0a\xe7\x1b\x78\x5e\x47\xe1\x40\x63\xec\xfb\x14\x86\x04\xd4\xb9\xe2\xba\x9a\xc9\x07\x44\xb6\xbf\xaa\xb6\x37\xe3\xe1\x5d\x4e\xea\x24\xcb\x4e\x9c\x76\xd8\xef\xa7\x50\xa7\xbe\x5c\x52\x41\xa4\x6c\x59\x6f\xd3\x96\x88\xb0\xdd\x52\xe5\x40\x64\x1c\x3f\x98\xd7\x09\x5c\x63\x47\xdd\xeb\xd3\x1c\xce\x61\x93\x80\x46\x07\xd3\x4f\xf8\x2f\x3e\x0d\xcc\xc9\x81\xa6\x8e\x0d\x69\x0a\x8b\x80\x6f\xf7\x57\xbb\x11", 4096)); syscall(SYS_ioctl, (intptr_t)r[2], 0xc0f24413, 0x100005c0); break; case 10: NONFAILING(*(uint8_t*)0x10000000 = 0); NONFAILING(*(uint8_t*)0x10000001 = 0); NONFAILING(*(uint8_t*)0x10000002 = 0); NONFAILING(*(uint8_t*)0x10000003 = 0); NONFAILING(*(uint8_t*)0x10000004 = 0); NONFAILING(*(uint8_t*)0x10000005 = 0); NONFAILING(*(uint8_t*)0x10000006 = -1); NONFAILING(*(uint8_t*)0x10000007 = -1); NONFAILING(*(uint8_t*)0x10000008 = -1); NONFAILING(*(uint8_t*)0x10000009 = -1); NONFAILING(*(uint8_t*)0x1000000a = -1); NONFAILING(*(uint8_t*)0x1000000b = -1); NONFAILING(*(uint16_t*)0x1000000c = htobe16(0x8100)); NONFAILING(STORE_BY_BITMASK(uint16_t, , 0x1000000e, 1, 0, 3)); NONFAILING(STORE_BY_BITMASK(uint16_t, , 0x1000000e, 1, 3, 1)); NONFAILING(STORE_BY_BITMASK(uint16_t, , 0x1000000e, 4, 4, 12)); NONFAILING(*(uint16_t*)0x10000010 = htobe16(0x806)); NONFAILING(*(uint16_t*)0x10000012 = htobe16(1)); NONFAILING(*(uint16_t*)0x10000014 = htobe16(0x800)); NONFAILING(*(uint8_t*)0x10000016 = 6); NONFAILING(*(uint8_t*)0x10000017 = 4); NONFAILING(*(uint16_t*)0x10000018 = htobe16(9)); NONFAILING(*(uint8_t*)0x1000001a = 0xaa); NONFAILING(*(uint8_t*)0x1000001b = 0xaa); NONFAILING(*(uint8_t*)0x1000001c = 0xaa); NONFAILING(*(uint8_t*)0x1000001d = 0xaa); NONFAILING(*(uint8_t*)0x1000001e = 0xaa); NONFAILING(*(uint8_t*)0x1000001f = 0xbb); NONFAILING(*(uint32_t*)0x10000020 = htobe32(0xe0000001)); NONFAILING(*(uint8_t*)0x10000024 = 0xaa); NONFAILING(*(uint8_t*)0x10000025 = 0xaa); NONFAILING(*(uint8_t*)0x10000026 = 0xaa); NONFAILING(*(uint8_t*)0x10000027 = 0xaa); NONFAILING(*(uint8_t*)0x10000028 = 0xaa); NONFAILING(*(uint8_t*)0x10000029 = 0xbb); NONFAILING(*(uint32_t*)0x1000002a = htobe32(-1)); break; case 11: NONFAILING(memcpy((void*)0x10000040, "\x0f\x5a\x60\xb0\x06\xc4\xe1\x01\x6b\xd7\x65\x2f\xc4\xe1\xf8\x11\x81\x00\x00\x00\x80\xc4\xc1\x19\x60\x18\x3e\x67\x3e\x0f\x01\xd9\xf2\xe1\xab\xf3\xee\x66\x0f\x14\x8b\xf1\xff\xff\xff", 45)); NONFAILING(syz_execute_func(0x10000040)); break; case 12: break; } } int main(void) { syscall(SYS_mmap, 0x10000000, 0x1000000, 7, 0x1012, -1, 0); install_segv_handler(); use_temporary_dir(); do_sandbox_none(); return 0; } :382:11: error: use of undeclared identifier 'SYS_freebsd12_closefrom' syscall(SYS_freebsd12_closefrom, (intptr_t)r[1]); ^ 1 error generated. compiler invocation: clang [-o /tmp/syz-executor092095929 -DGOOS_freebsd=1 -DGOARCH_386=1 -DHOSTGOOS_freebsd=1 -x c - -m32 -O2 -pthread -Wall -Werror -Wparentheses -Wunused-const-variable -Wframe-larger-than=16384 -static -lc++ -Wno-overflow] --- FAIL: TestGenerate/freebsd/386/6 (1.31s) csource_test.go:108: opts: {Threaded:true Collide:false Repeat:true RepeatTimes:0 Procs:4 Slowdown:1 Sandbox:none Fault:false FaultCall:0 FaultNth:0 Leak:false NetInjection:false NetDevices:false NetReset:false Cgroups:false BinfmtMisc:false CloseFDs:false KCSAN:false DevlinkPCI:false USB:false VhciInjection:false Wifi:false IEEE802154:false Sysctl:false UseTmpDir:true HandleSegv:false Repro:false Trace:false} program: getsockopt$inet6_sctp_SCTP_EVENT(0xffffffffffffff9c, 0x84, 0x1e, &(0x7f0000000000)={0x0, 0x4, 0x1}, &(0x7f0000000040)=0x8) getsockopt$inet6_sctp_SCTP_MAX_BURST(0xffffffffffffffff, 0x84, 0x19, &(0x7f0000000080)={0x0, 0x7fff}, &(0x7f00000000c0)=0x8) r0 = dup(0xffffffffffffffff) setsockopt$inet6_sctp_SCTP_ADAPTATION_LAYER(r0, 0x84, 0x8, &(0x7f0000000100)={0x7}, 0x4) readv(r0, &(0x7f0000000540)=[{&(0x7f0000000140)=""/149, 0x95}, {&(0x7f0000000200)=""/179, 0xb3}, {&(0x7f00000002c0)=""/172, 0xac}, {&(0x7f0000000380)=""/182, 0xb6}, {&(0x7f0000000440)=""/206, 0xce}], 0x5) thr_wake(0xffffffffffffffff) r1 = socket$inet_udplite(0x2, 0x2, 0x88) freebsd12_closefrom(r1) r2 = open(&(0x7f0000000580)='./file0\x00', 0x4, 0x40) ioctl$DIOCGETSTATE(r2, 0xc0f24413, &(0x7f00000005c0)="2a368a90b488d04ee1eccd139778043b00a6f81a3627b593b0dfce33265cda8fba8b0fa538b3e364ad1d1f7de1011c63f592a64dd0ec953f9c050f991f42d24d7bc47c4d5bf323e393605e59a1eb5bc4e948f83890911ed35b53a2b0d63db79dc21d6190f8b434d6ff85e54fb9a28a7566d1a24337e72e82acc9e518339acac7dd8960a1c9c5cb3da9e6bc0b697e9dbbc60fa8b72c3719286bf44c2e8fc8356e9125eae9bed216f349c292c989d7dcd252dfb79c4fdbdc865109f1e3cf9cd67cfa8babb7d3627ce0080910c5755c92cbb2c159172a65ea8a2085f4ce10e1436ef2f7d6f1db702a387cd35681293331bd1bdbd690274a7c372f84e4d5748791d707ee5c127eda8b84596b0c10890c881006beb38ad56d139d8c74f14f3598de551ee3a13466e67cb3d2c5fd909061522058ffbe9ae431325544c894b9841a4c253632a332c6e0d881645f90b6337db99b7fad1bd162f73d11ce5e57d5f321fb68a795c990662a35706af845b5383fe50ba8637613dd43aa7cf20020355218e060af2658866349197f30c835351bd69683baaab8be6b4da04fb35a423314fab610b8d1cf0440fedb28a5e19584ef7867bd962ba4ede513af03dda669f76c67d28fb507d5762c61d528f1cf3a7c563eee1c04106254ce3fd821c17a0defc37d79a5de7ef9352c7b411c953958d254d0d3e5ae618a68a53e45809d493c474a208ccc0f170df4836d0593b7b7ce874fa01fe0415a594f941c31f0784aad394f06b8537029555ccc73eaab0b36846fe5cc6e92db0c90a62d1d36c382c351921789dfbe0f60b13db0814aaf4fa6f813a7cf2ad12ebe1050eef92768c313718d8db202e3d1093dcf5933451efd9b72ee4ef75dfc0ea0afffb81bbee550382b6b1212cea097b709aec7c0a85799127d01376f7bd6f255732972f889b6843f615478ee23124737f813b18f3133af12b4e41e70bea058b00a5f965ed2377b48916bc2a7162adbf7bc9ca11aeaaf88c2f5229af6dd3861574a0d5d5ae482f2d7e86d172005cca565b12b199a7d81087d85776d613940b48735266d45a4ad11e168e89b893e650b984b483abb318f432f13c61f26f3deabc6b45dcf5ff4579da89a9d23251d1a6bec122cb210fc3afa89102395e1d26b14ca4180c1b6fe0b3000049550283b618ab1fd6b165855b297d9457ac54946fb99e6f0d8872db87934347b6d9a38a731bf8bd08f2a7a7d80d4cf24fa9a16c209a18494133d6dd0d292efeba7872c4d7bdfafd416e634cf90ab4dc9bccc643227a05552eee0f916ec202dcb011c8394b10996873a0a4b7aee1514f595d23289a3bf62085b0aeea0009206e7a7061ad866352241708acbcf3c2fc0fdcaaaa8b3be8e510b99e04b96ddafa9f8483b7a568c5ebaddad5677d9144a270d0444aea3c0775d241d79baea30dc4bb19a712471f112838c7525496d4a8fa66658610347d490af85305ceabf0f35ac277f2ef1b6a8e5813ce0bea587e627d725f1db1241222acd41e16c8a32bdb40778d4a10f87b1e90e006dfc03d2934589d25965240ee9c21419a2aa5bd8f3fcd3208f9b52155513a6da73468dc0703102bcca0eba18e88c19da64ab5c6bf6cb8109730153693332f7e160862719dc08175ed074f5bf2887705501331cf75254fce0e145ac2241875293036f2aa96592194073d04754c26f19e7763332b43d0287a28347d5155bacfd32628f500d9e9c04f5369f6317e606e422f98c48b11f755b2b0fdc79494a769700d35a88a330f02cab2fb7b65049e2d1e350a6e02d5d54ac7c85f268c0eaf77071d5acabed99429030d00b30c4caa21ce322d4f780e892201129ff772d22cc4d4c274b479948d22acfc1760b2917ff308e9a3aa22779bd0f453d11e0dee788dcf95b7be90c3b3b3a7fe535da503c381e346eb2a0b0e375ad726ee2a38919810d5c545edcea1b23109a3fb68e30c01cc704a9d23ae55d18cc9fdff02bd484d59f468d75a796657fdca59f55d4be7efd7378a31685334adc0cacaef9af5649da85dc6c5989cf8e2b9977a62a8ca8bc27782b1b3028a4de9a0e87dbab7879144e40a811f0b1b2880d26823c990adeb7df41116fcf6022a08d87ac7c63ecdff796dafa082e5cd85d6c3f17f8740ea1e9a0c886e0cd7074c45dbc2dc7b34c6859e06a0cee9b20ce43724a414eb77b0b804dffcc7bc44dab7fa02a3836eae396f9ede48d6deea333b0a990ebbcd1b336bb73d8e72c72e12449f1ca720a3bcd9788d1dcdde51214b771a1ca1389ebb5a05645acf97315651ae886ecd5f009a7cc62bfc49459b71fea3f8adc05d37129781ac9073eb83f1eeb1fc84a90c8316c36164259a7c24e5a200c353ebd7bf2324eff521680b218a8654b6df7b046afdc85a78cfee174a6e91978d4af6511d30799195df42886c8327dcc624c2912f83fe1bb6302ec71a8f098d5e056d89595c460062d29a5546e5ba77e0a179a848f033e11afc1a19897e83c2ab7eb58207222156767ebdb2e2426ae2c594c205da59650283b33cbf50a77d607de9e2ffe0f080fd773c7e03f20505dd0cb15cd8924cdd6b87d7f615bccd2eb47839561d79a02ca9cde0fde19b5a0c2a90bd4a0c7361bfdad5374ac42b5161115759cfa2ac08c16795ab52c84c540710b1d1d5006f2aba098c6b682a51f03ff5d79b6bce020ce726f7fa2e7685138087d609c05054a9f4c4568152e8900d866bd4a980b07d35b833647d1f4e26575d4de1c7a7ccf5cd119d6db4c72fb9c24e3a085ecdde521ff18bec6c16c931457cd8e26461d48b55c211a27ba498663b34ea0dcfd8cdfa12900fe8367abbeac8e4eb1a18036c9c1694935a573b61afc05c1265aafb6ef584e823b842764b71dca331837649a51d0c96cefec435835b8f4b5dac5d1f24be94d5378a1664efc1daf557015657adb77881c5d181cd9d1f1d3d96bf74d5167930285b6f98fef31bbef7378cf2f12c4c479f96076d8170d768dfd2fe823cd14d6d7059d75d9547ab22ada6fd1a364ae7629e6f7e466a4c8a49483e4555f6c0881fd2cee97923247f2ca839f88b1eda7c3b7c75f530c0fd60b85e8b10d4b58d7b8815bbf1e4f42a16b25225888bda247d46be3551325b606f61ce776a92f046884fd275e82d4c08761b60d698c5adde78ded62d8835a1b23b3ff96576b2c198f722e76ea22667388a44ed316ea6dc5be4bd84043572a2afa19cd9a84ef5ffc28fb0f689c4c2526cec261502f1e0af665cbdef50e3a669c0aa1364307c89d766d5869e2c9e414ca216735c01826eee4ea8bcb09b67a8dd8f7edb68536c6eefa0fa0d78f4a86bd70482d9852e48291d1e16ad11434779a27861af8192a64275084e7d9e0604c52073c3324b9577b088073ab270041d041cf5ff18831b80e00a273b6860059bec4a6c41902644ef923e890d558b5a96ef9eefe19de120735e98987a98d53a56e3226c576cd2ef486ae138ff3b62eae33ca91f8b77d3a98f583e863d4ebe53d0b3fa97c4768280593f935f6142595ed15057adf8b60148620493afeb5ff5de17b6ac26d5bbb7cf7f47132642ebe73de0051f073610b0c1eaef6749919cf0e87144c0d8f70eeabb7fe6c2e58f914e544e8be21c2f3a602d61cfcf01765e49cbcd0a6f9b1616ec56a4de6e52bc979840a842d9b2dd4b5d59d15b3ce85138bc98c1e254c84853b6726b6fdb7bc79e90d34be3dd86c4defbfac943880292fec0d995cdb5244514d11518efe79204d53c9cda4a487bf30e9ff7f286e536ac1fe9fa1a71f3eed0e47f8471e88db19fcd3e3197698969798f26d5c9c4b8a7b935a0faf395d2ba9ee8c57e13747ad4d01a2eeca7e853f9c5273fc161854c2e966f853a4888844442291ed0b3c59315f8cbae2c9a4af084d10cb4c7e640001b7f340132d80474c6daa0e009c380df0feb57d5eb1ed8b40cdf2446c8a424d48ebe5897d922e42f25b98836395db513e4904fc2521acca5303ac576454e602d4b35520736818a8468379000f8f30f9e37d05c7bc1f16ecc9acb0f8c630966775575a4064a770f7b53f7ca7ccc00bdb71195d53cf21b74820665220c05785b225b2cbe2855a5ae40b9bce9e1eddb78a9e4c0825fb47fff9e6f37a9554d9ee046cd18a301daee26ec5eef4f101256e0c59df35cbb5192f80162ba3937dbf3619987bf18b1d69d6e6e0c42fead7f0ed6d2cf54da78f874960e445a108b7bb0987cb9427e1023a1c85c272c10bca781f98c76e10673924e658e736cc544afc0cdecde8e58d14a18e4b742150751a46a14d90d710a9ea82266e46654bbc153685c195998b0923cce31350b79b2039f23855dc3ba11438b15cc03aaad9d31b5819c4b41234e93a306155479a6bd45df84e1cf9e8d8ea0e896d9288d2e48d8730d86bf8997c62a8378ad95925672defbaa1c9cba315ce1e64f8616b174b88c57ab780748ae96cdbe36dc4d79054fdd7bec3b40b1fc7b1266e197ca7fe41d0743ad9a8a10430a4e1ccedf8aa48623fffa2bfd330364b0e3aa1db7d9b9aa4ca8e17d93c916d6afe57d33f7b059b670bba34bceed51165ffc0dca6af532eb3ef976b296e975ce25b40ec639ca43593b25946ba82a819e8f1afa7dfa345f35cc08bf3e77302886caf08e1432445f67dc59c6985e7f8c9bbc8a68a3925e20c14bdd2b6922bc924321f5823df511834f2a29e4d7e320f963c7ad3a15222afa22a98375147fb3f4333f5b8c139a1045d3cc6de57b24a2341cc16b3dfe069a35865b852c2f84fd4ec28ec178fd0b9ff32e1e529bf3dc969ae17db1396c2cba74b6ad4b83207eab4b12c93604da7ebbd039bae1ea1cbf5c979870e8e87aec0c883e8b952bec1986760403b193e165fff20ff5160a434bd25a7cbecc4f8b9b7a55b41296f9609342b8a76afb6ab9891bd1742708a99f34a56efc139200f1b5fe157bb276240e7e2a0a0f4ea591ac0b24a21ccd1cc4ef6c8baa082dea23fe549901ecbe78c474b27543349059f9115a59139e45ee6f9ff4052385422c93861594fe989fa84d2821d63ea55d9327d7019e912f7ebaebf24bf2116ccc1a6a283c397ba3caa5ea8d44ac736783fb4ef27159570aef51156e90e694faa6d1a9e1921d8d1b187c3ea367f3308cfe1b7412a558bf3ce7ffef30f8927e496126e3efe171f4beef71bae80d363f5b73aa8f7a91282426ca3c7f088e42556c56545bd0de19696d7b60737658008fd63c23fefdcf55a335846b1a1daba80404b4fc487d19f32e3ad8681390f2c57a20974244fd112dd0c8830e41160d5d740599513ae0c03a908a008eb411968d53f5b9c1d8dd4f3f0365592e626f4f20168521a58739767b18cf2400ca6f697ccea4463aa90389092f35eca8a4b1b7c5da04283a67b0fb13f36047376bf3591aebd37abf508b366f5b6f5442f41c0572fc8ea15b5d92cc3479d018e57d72dbc1b03710dae0a3e27f92a6d96f0192b7d63af2827e693926c08f13039e8f8c9ec97d5ffb34e5ec25f1755964df048d22f48eed1756bf1660c619fb1a036901fd9ad5904ee354e90174b12ee8d4499e18f699f6f8bdcfa1959b5addba3f40eebc727594c7d267f5f123ed25db50eb98288c2d51416a120597f4ec0ebaa08a9f1afa7a92d63de9541d1d113c8d645bf0279db6e7e1d0ae71b785e47e14063ecfb148604d4b9e2ba9ac90744b6bfaab637e3e15d4eea24cb4e9c76d8efa750a7be5c5241a46c596fd39688b0dd52e540641c3f98d7095c6347ddebd31cce6193804607d34ff82f3e0dccc981a68e0d690a8b806ff757bb11") syz_emit_ethernet(0x2e, &(0x7f0000000000)={@empty, @broadcast, [{[], {0x8100, 0x1, 0x1, 0x4}}], {@arp={0x806, @ether_ipv4={0x1, 0x800, 0x6, 0x4, 0x9, @remote, @multicast1, @remote, @broadcast}}}}) syz_execute_func(&(0x7f0000000040)="0f5a60b006c4e1016bd7652fc4e1f8118100000080c4c11960183e673e0f01d9f2e1abf3ee660f148bf1ffffff") syz_extract_tcp_res(&(0x7f0000000080), 0x7fffffff, 0x7) csource_test.go:109: failed to build program: // autogenerated by syzkaller (https://github.com/google/syzkaller) #define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include static unsigned long long procid; static void kill_and_wait(int pid, int* status) { kill(pid, SIGKILL); while (waitpid(-1, status, 0) != pid) { } } static void sleep_ms(uint64_t ms) { usleep(ms * 1000); } static uint64_t current_time_ms(void) { struct timespec ts; if (clock_gettime(CLOCK_MONOTONIC, &ts)) exit(1); return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000; } static void use_temporary_dir(void) { char tmpdir_template[] = "./syzkaller.XXXXXX"; char* tmpdir = mkdtemp(tmpdir_template); if (!tmpdir) exit(1); if (chmod(tmpdir, 0777)) exit(1); if (chdir(tmpdir)) exit(1); } static void __attribute__((noinline)) remove_dir(const char* dir) { DIR* dp = opendir(dir); if (dp == NULL) { if (errno == EACCES) { if (rmdir(dir)) exit(1); return; } exit(1); } struct dirent* ep = 0; while ((ep = readdir(dp))) { if (strcmp(ep->d_name, ".") == 0 || strcmp(ep->d_name, "..") == 0) continue; char filename[FILENAME_MAX]; snprintf(filename, sizeof(filename), "%s/%s", dir, ep->d_name); struct stat st; if (lstat(filename, &st)) exit(1); if (S_ISDIR(st.st_mode)) { remove_dir(filename); continue; } if (unlink(filename)) exit(1); } closedir(dp); if (rmdir(dir)) exit(1); } static void thread_start(void* (*fn)(void*), void* arg) { pthread_t th; pthread_attr_t attr; pthread_attr_init(&attr); pthread_attr_setstacksize(&attr, 128 << 10); int i = 0; for (; i < 100; i++) { if (pthread_create(&th, &attr, fn, arg) == 0) { pthread_attr_destroy(&attr); return; } if (errno == EAGAIN) { usleep(50); continue; } break; } exit(1); } typedef struct { pthread_mutex_t mu; pthread_cond_t cv; int state; } event_t; static void event_init(event_t* ev) { if (pthread_mutex_init(&ev->mu, 0)) exit(1); if (pthread_cond_init(&ev->cv, 0)) exit(1); ev->state = 0; } static void event_reset(event_t* ev) { ev->state = 0; } static void event_set(event_t* ev) { pthread_mutex_lock(&ev->mu); if (ev->state) exit(1); ev->state = 1; pthread_mutex_unlock(&ev->mu); pthread_cond_broadcast(&ev->cv); } static void event_wait(event_t* ev) { pthread_mutex_lock(&ev->mu); while (!ev->state) pthread_cond_wait(&ev->cv, &ev->mu); pthread_mutex_unlock(&ev->mu); } static int event_isset(event_t* ev) { pthread_mutex_lock(&ev->mu); int res = ev->state; pthread_mutex_unlock(&ev->mu); return res; } static int event_timedwait(event_t* ev, uint64_t timeout) { uint64_t start = current_time_ms(); uint64_t now = start; pthread_mutex_lock(&ev->mu); for (;;) { if (ev->state) break; uint64_t remain = timeout - (now - start); struct timespec ts; ts.tv_sec = remain / 1000; ts.tv_nsec = (remain % 1000) * 1000 * 1000; pthread_cond_timedwait(&ev->cv, &ev->mu, &ts); now = current_time_ms(); if (now - start > timeout) break; } int res = ev->state; pthread_mutex_unlock(&ev->mu); return res; } #define BITMASK(bf_off,bf_len) (((1ull << (bf_len)) - 1) << (bf_off)) #define STORE_BY_BITMASK(type,htobe,addr,val,bf_off,bf_len) *(type*)(addr) = htobe((htobe(*(type*)(addr)) & ~BITMASK((bf_off), (bf_len))) | (((type)(val) << (bf_off)) & BITMASK((bf_off), (bf_len)))) static void sandbox_common() { struct rlimit rlim; rlim.rlim_cur = rlim.rlim_max = 128 << 20; setrlimit(RLIMIT_AS, &rlim); rlim.rlim_cur = rlim.rlim_max = 8 << 20; setrlimit(RLIMIT_MEMLOCK, &rlim); rlim.rlim_cur = rlim.rlim_max = 1 << 20; setrlimit(RLIMIT_FSIZE, &rlim); rlim.rlim_cur = rlim.rlim_max = 1 << 20; setrlimit(RLIMIT_STACK, &rlim); rlim.rlim_cur = rlim.rlim_max = 0; setrlimit(RLIMIT_CORE, &rlim); rlim.rlim_cur = rlim.rlim_max = 256; setrlimit(RLIMIT_NOFILE, &rlim); } static void loop(); static int do_sandbox_none(void) { sandbox_common(); loop(); return 0; } static long syz_execute_func(volatile long text) { ((void (*)(void))(text))(); return 0; } struct thread_t { int created, call; event_t ready, done; }; static struct thread_t threads[16]; static void execute_call(int call); static int running; static void* thr(void* arg) { struct thread_t* th = (struct thread_t*)arg; for (;;) { event_wait(&th->ready); event_reset(&th->ready); execute_call(th->call); __atomic_fetch_sub(&running, 1, __ATOMIC_RELAXED); event_set(&th->done); } return 0; } static void execute_one(void) { int i, call, thread; for (call = 0; call < 13; call++) { for (thread = 0; thread < (int)(sizeof(threads) / sizeof(threads[0])); thread++) { struct thread_t* th = &threads[thread]; if (!th->created) { th->created = 1; event_init(&th->ready); event_init(&th->done); event_set(&th->done); thread_start(thr, th); } if (!event_isset(&th->done)) continue; event_reset(&th->done); th->call = call; __atomic_fetch_add(&running, 1, __ATOMIC_RELAXED); event_set(&th->ready); event_timedwait(&th->done, 50); break; } } for (i = 0; i < 100 && __atomic_load_n(&running, __ATOMIC_RELAXED); i++) sleep_ms(1); } static void execute_one(void); #define WAIT_FLAGS 0 static void loop(void) { int iter = 0; for (;; iter++) { char cwdbuf[32]; sprintf(cwdbuf, "./%d", iter); if (mkdir(cwdbuf, 0777)) exit(1); int pid = fork(); if (pid < 0) exit(1); if (pid == 0) { if (chdir(cwdbuf)) exit(1); execute_one(); exit(0); } int status = 0; uint64_t start = current_time_ms(); for (;;) { if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid) break; sleep_ms(1); if (current_time_ms() - start < 5000) { continue; } kill_and_wait(pid, &status); break; } remove_dir(cwdbuf); } } uint64_t r[3] = {0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff}; void execute_call(int call) { intptr_t res = 0; switch (call) { case 0: *(uint32_t*)0x10000000 = 0; *(uint16_t*)0x10000004 = 4; *(uint8_t*)0x10000006 = 1; *(uint32_t*)0x10000040 = 8; syscall(SYS_getsockopt, 0xffffff9c, 0x84, 0x1e, 0x10000000, 0x10000040); break; case 1: *(uint32_t*)0x10000080 = 0; *(uint32_t*)0x10000084 = 0x7fff; *(uint32_t*)0x100000c0 = 8; syscall(SYS_getsockopt, -1, 0x84, 0x19, 0x10000080, 0x100000c0); break; case 2: res = syscall(SYS_dup, -1); if (res != -1) r[0] = res; break; case 3: *(uint32_t*)0x10000100 = 7; syscall(SYS_setsockopt, (intptr_t)r[0], 0x84, 8, 0x10000100, 4); break; case 4: *(uint32_t*)0x10000540 = 0x10000140; *(uint32_t*)0x10000544 = 0x95; *(uint32_t*)0x10000548 = 0x10000200; *(uint32_t*)0x1000054c = 0xb3; *(uint32_t*)0x10000550 = 0x100002c0; *(uint32_t*)0x10000554 = 0xac; *(uint32_t*)0x10000558 = 0x10000380; *(uint32_t*)0x1000055c = 0xb6; *(uint32_t*)0x10000560 = 0x10000440; *(uint32_t*)0x10000564 = 0xce; syscall(SYS_readv, (intptr_t)r[0], 0x10000540, 5); break; case 5: syscall(SYS_thr_wake, -1); break; case 6: res = syscall(SYS_socket, 2, 2, 0x88); if (res != -1) r[1] = res; break; case 7: syscall(SYS_freebsd12_closefrom, (intptr_t)r[1]); break; case 8: memcpy((void*)0x10000580, "./file0\000", 8); res = syscall(SYS_open, 0x10000580, 4, 0x40); if (res != -1) r[2] = res; break; case 9: memcpy((void*)0x100005c0, "\x2a\x36\x8a\x90\xb4\x88\xd0\x4e\xe1\xec\xcd\x13\x97\x78\x04\x3b\x00\xa6\xf8\x1a\x36\x27\xb5\x93\xb0\xdf\xce\x33\x26\x5c\xda\x8f\xba\x8b\x0f\xa5\x38\xb3\xe3\x64\xad\x1d\x1f\x7d\xe1\x01\x1c\x63\xf5\x92\xa6\x4d\xd0\xec\x95\x3f\x9c\x05\x0f\x99\x1f\x42\xd2\x4d\x7b\xc4\x7c\x4d\x5b\xf3\x23\xe3\x93\x60\x5e\x59\xa1\xeb\x5b\xc4\xe9\x48\xf8\x38\x90\x91\x1e\xd3\x5b\x53\xa2\xb0\xd6\x3d\xb7\x9d\xc2\x1d\x61\x90\xf8\xb4\x34\xd6\xff\x85\xe5\x4f\xb9\xa2\x8a\x75\x66\xd1\xa2\x43\x37\xe7\x2e\x82\xac\xc9\xe5\x18\x33\x9a\xca\xc7\xdd\x89\x60\xa1\xc9\xc5\xcb\x3d\xa9\xe6\xbc\x0b\x69\x7e\x9d\xbb\xc6\x0f\xa8\xb7\x2c\x37\x19\x28\x6b\xf4\x4c\x2e\x8f\xc8\x35\x6e\x91\x25\xea\xe9\xbe\xd2\x16\xf3\x49\xc2\x92\xc9\x89\xd7\xdc\xd2\x52\xdf\xb7\x9c\x4f\xdb\xdc\x86\x51\x09\xf1\xe3\xcf\x9c\xd6\x7c\xfa\x8b\xab\xb7\xd3\x62\x7c\xe0\x08\x09\x10\xc5\x75\x5c\x92\xcb\xb2\xc1\x59\x17\x2a\x65\xea\x8a\x20\x85\xf4\xce\x10\xe1\x43\x6e\xf2\xf7\xd6\xf1\xdb\x70\x2a\x38\x7c\xd3\x56\x81\x29\x33\x31\xbd\x1b\xdb\xd6\x90\x27\x4a\x7c\x37\x2f\x84\xe4\xd5\x74\x87\x91\xd7\x07\xee\x5c\x12\x7e\xda\x8b\x84\x59\x6b\x0c\x10\x89\x0c\x88\x10\x06\xbe\xb3\x8a\xd5\x6d\x13\x9d\x8c\x74\xf1\x4f\x35\x98\xde\x55\x1e\xe3\xa1\x34\x66\xe6\x7c\xb3\xd2\xc5\xfd\x90\x90\x61\x52\x20\x58\xff\xbe\x9a\xe4\x31\x32\x55\x44\xc8\x94\xb9\x84\x1a\x4c\x25\x36\x32\xa3\x32\xc6\xe0\xd8\x81\x64\x5f\x90\xb6\x33\x7d\xb9\x9b\x7f\xad\x1b\xd1\x62\xf7\x3d\x11\xce\x5e\x57\xd5\xf3\x21\xfb\x68\xa7\x95\xc9\x90\x66\x2a\x35\x70\x6a\xf8\x45\xb5\x38\x3f\xe5\x0b\xa8\x63\x76\x13\xdd\x43\xaa\x7c\xf2\x00\x20\x35\x52\x18\xe0\x60\xaf\x26\x58\x86\x63\x49\x19\x7f\x30\xc8\x35\x35\x1b\xd6\x96\x83\xba\xaa\xb8\xbe\x6b\x4d\xa0\x4f\xb3\x5a\x42\x33\x14\xfa\xb6\x10\xb8\xd1\xcf\x04\x40\xfe\xdb\x28\xa5\xe1\x95\x84\xef\x78\x67\xbd\x96\x2b\xa4\xed\xe5\x13\xaf\x03\xdd\xa6\x69\xf7\x6c\x67\xd2\x8f\xb5\x07\xd5\x76\x2c\x61\xd5\x28\xf1\xcf\x3a\x7c\x56\x3e\xee\x1c\x04\x10\x62\x54\xce\x3f\xd8\x21\xc1\x7a\x0d\xef\xc3\x7d\x79\xa5\xde\x7e\xf9\x35\x2c\x7b\x41\x1c\x95\x39\x58\xd2\x54\xd0\xd3\xe5\xae\x61\x8a\x68\xa5\x3e\x45\x80\x9d\x49\x3c\x47\x4a\x20\x8c\xcc\x0f\x17\x0d\xf4\x83\x6d\x05\x93\xb7\xb7\xce\x87\x4f\xa0\x1f\xe0\x41\x5a\x59\x4f\x94\x1c\x31\xf0\x78\x4a\xad\x39\x4f\x06\xb8\x53\x70\x29\x55\x5c\xcc\x73\xea\xab\x0b\x36\x84\x6f\xe5\xcc\x6e\x92\xdb\x0c\x90\xa6\x2d\x1d\x36\xc3\x82\xc3\x51\x92\x17\x89\xdf\xbe\x0f\x60\xb1\x3d\xb0\x81\x4a\xaf\x4f\xa6\xf8\x13\xa7\xcf\x2a\xd1\x2e\xbe\x10\x50\xee\xf9\x27\x68\xc3\x13\x71\x8d\x8d\xb2\x02\xe3\xd1\x09\x3d\xcf\x59\x33\x45\x1e\xfd\x9b\x72\xee\x4e\xf7\x5d\xfc\x0e\xa0\xaf\xff\xb8\x1b\xbe\xe5\x50\x38\x2b\x6b\x12\x12\xce\xa0\x97\xb7\x09\xae\xc7\xc0\xa8\x57\x99\x12\x7d\x01\x37\x6f\x7b\xd6\xf2\x55\x73\x29\x72\xf8\x89\xb6\x84\x3f\x61\x54\x78\xee\x23\x12\x47\x37\xf8\x13\xb1\x8f\x31\x33\xaf\x12\xb4\xe4\x1e\x70\xbe\xa0\x58\xb0\x0a\x5f\x96\x5e\xd2\x37\x7b\x48\x91\x6b\xc2\xa7\x16\x2a\xdb\xf7\xbc\x9c\xa1\x1a\xea\xaf\x88\xc2\xf5\x22\x9a\xf6\xdd\x38\x61\x57\x4a\x0d\x5d\x5a\xe4\x82\xf2\xd7\xe8\x6d\x17\x20\x05\xcc\xa5\x65\xb1\x2b\x19\x9a\x7d\x81\x08\x7d\x85\x77\x6d\x61\x39\x40\xb4\x87\x35\x26\x6d\x45\xa4\xad\x11\xe1\x68\xe8\x9b\x89\x3e\x65\x0b\x98\x4b\x48\x3a\xbb\x31\x8f\x43\x2f\x13\xc6\x1f\x26\xf3\xde\xab\xc6\xb4\x5d\xcf\x5f\xf4\x57\x9d\xa8\x9a\x9d\x23\x25\x1d\x1a\x6b\xec\x12\x2c\xb2\x10\xfc\x3a\xfa\x89\x10\x23\x95\xe1\xd2\x6b\x14\xca\x41\x80\xc1\xb6\xfe\x0b\x30\x00\x04\x95\x50\x28\x3b\x61\x8a\xb1\xfd\x6b\x16\x58\x55\xb2\x97\xd9\x45\x7a\xc5\x49\x46\xfb\x99\xe6\xf0\xd8\x87\x2d\xb8\x79\x34\x34\x7b\x6d\x9a\x38\xa7\x31\xbf\x8b\xd0\x8f\x2a\x7a\x7d\x80\xd4\xcf\x24\xfa\x9a\x16\xc2\x09\xa1\x84\x94\x13\x3d\x6d\xd0\xd2\x92\xef\xeb\xa7\x87\x2c\x4d\x7b\xdf\xaf\xd4\x16\xe6\x34\xcf\x90\xab\x4d\xc9\xbc\xcc\x64\x32\x27\xa0\x55\x52\xee\xe0\xf9\x16\xec\x20\x2d\xcb\x01\x1c\x83\x94\xb1\x09\x96\x87\x3a\x0a\x4b\x7a\xee\x15\x14\xf5\x95\xd2\x32\x89\xa3\xbf\x62\x08\x5b\x0a\xee\xa0\x00\x92\x06\xe7\xa7\x06\x1a\xd8\x66\x35\x22\x41\x70\x8a\xcb\xcf\x3c\x2f\xc0\xfd\xca\xaa\xa8\xb3\xbe\x8e\x51\x0b\x99\xe0\x4b\x96\xdd\xaf\xa9\xf8\x48\x3b\x7a\x56\x8c\x5e\xba\xdd\xad\x56\x77\xd9\x14\x4a\x27\x0d\x04\x44\xae\xa3\xc0\x77\x5d\x24\x1d\x79\xba\xea\x30\xdc\x4b\xb1\x9a\x71\x24\x71\xf1\x12\x83\x8c\x75\x25\x49\x6d\x4a\x8f\xa6\x66\x58\x61\x03\x47\xd4\x90\xaf\x85\x30\x5c\xea\xbf\x0f\x35\xac\x27\x7f\x2e\xf1\xb6\xa8\xe5\x81\x3c\xe0\xbe\xa5\x87\xe6\x27\xd7\x25\xf1\xdb\x12\x41\x22\x2a\xcd\x41\xe1\x6c\x8a\x32\xbd\xb4\x07\x78\xd4\xa1\x0f\x87\xb1\xe9\x0e\x00\x6d\xfc\x03\xd2\x93\x45\x89\xd2\x59\x65\x24\x0e\xe9\xc2\x14\x19\xa2\xaa\x5b\xd8\xf3\xfc\xd3\x20\x8f\x9b\x52\x15\x55\x13\xa6\xda\x73\x46\x8d\xc0\x70\x31\x02\xbc\xca\x0e\xba\x18\xe8\x8c\x19\xda\x64\xab\x5c\x6b\xf6\xcb\x81\x09\x73\x01\x53\x69\x33\x32\xf7\xe1\x60\x86\x27\x19\xdc\x08\x17\x5e\xd0\x74\xf5\xbf\x28\x87\x70\x55\x01\x33\x1c\xf7\x52\x54\xfc\xe0\xe1\x45\xac\x22\x41\x87\x52\x93\x03\x6f\x2a\xa9\x65\x92\x19\x40\x73\xd0\x47\x54\xc2\x6f\x19\xe7\x76\x33\x32\xb4\x3d\x02\x87\xa2\x83\x47\xd5\x15\x5b\xac\xfd\x32\x62\x8f\x50\x0d\x9e\x9c\x04\xf5\x36\x9f\x63\x17\xe6\x06\xe4\x22\xf9\x8c\x48\xb1\x1f\x75\x5b\x2b\x0f\xdc\x79\x49\x4a\x76\x97\x00\xd3\x5a\x88\xa3\x30\xf0\x2c\xab\x2f\xb7\xb6\x50\x49\xe2\xd1\xe3\x50\xa6\xe0\x2d\x5d\x54\xac\x7c\x85\xf2\x68\xc0\xea\xf7\x70\x71\xd5\xac\xab\xed\x99\x42\x90\x30\xd0\x0b\x30\xc4\xca\xa2\x1c\xe3\x22\xd4\xf7\x80\xe8\x92\x20\x11\x29\xff\x77\x2d\x22\xcc\x4d\x4c\x27\x4b\x47\x99\x48\xd2\x2a\xcf\xc1\x76\x0b\x29\x17\xff\x30\x8e\x9a\x3a\xa2\x27\x79\xbd\x0f\x45\x3d\x11\xe0\xde\xe7\x88\xdc\xf9\x5b\x7b\xe9\x0c\x3b\x3b\x3a\x7f\xe5\x35\xda\x50\x3c\x38\x1e\x34\x6e\xb2\xa0\xb0\xe3\x75\xad\x72\x6e\xe2\xa3\x89\x19\x81\x0d\x5c\x54\x5e\xdc\xea\x1b\x23\x10\x9a\x3f\xb6\x8e\x30\xc0\x1c\xc7\x04\xa9\xd2\x3a\xe5\x5d\x18\xcc\x9f\xdf\xf0\x2b\xd4\x84\xd5\x9f\x46\x8d\x75\xa7\x96\x65\x7f\xdc\xa5\x9f\x55\xd4\xbe\x7e\xfd\x73\x78\xa3\x16\x85\x33\x4a\xdc\x0c\xac\xae\xf9\xaf\x56\x49\xda\x85\xdc\x6c\x59\x89\xcf\x8e\x2b\x99\x77\xa6\x2a\x8c\xa8\xbc\x27\x78\x2b\x1b\x30\x28\xa4\xde\x9a\x0e\x87\xdb\xab\x78\x79\x14\x4e\x40\xa8\x11\xf0\xb1\xb2\x88\x0d\x26\x82\x3c\x99\x0a\xde\xb7\xdf\x41\x11\x6f\xcf\x60\x22\xa0\x8d\x87\xac\x7c\x63\xec\xdf\xf7\x96\xda\xfa\x08\x2e\x5c\xd8\x5d\x6c\x3f\x17\xf8\x74\x0e\xa1\xe9\xa0\xc8\x86\xe0\xcd\x70\x74\xc4\x5d\xbc\x2d\xc7\xb3\x4c\x68\x59\xe0\x6a\x0c\xee\x9b\x20\xce\x43\x72\x4a\x41\x4e\xb7\x7b\x0b\x80\x4d\xff\xcc\x7b\xc4\x4d\xab\x7f\xa0\x2a\x38\x36\xea\xe3\x96\xf9\xed\xe4\x8d\x6d\xee\xa3\x33\xb0\xa9\x90\xeb\xbc\xd1\xb3\x36\xbb\x73\xd8\xe7\x2c\x72\xe1\x24\x49\xf1\xca\x72\x0a\x3b\xcd\x97\x88\xd1\xdc\xdd\xe5\x12\x14\xb7\x71\xa1\xca\x13\x89\xeb\xb5\xa0\x56\x45\xac\xf9\x73\x15\x65\x1a\xe8\x86\xec\xd5\xf0\x09\xa7\xcc\x62\xbf\xc4\x94\x59\xb7\x1f\xea\x3f\x8a\xdc\x05\xd3\x71\x29\x78\x1a\xc9\x07\x3e\xb8\x3f\x1e\xeb\x1f\xc8\x4a\x90\xc8\x31\x6c\x36\x16\x42\x59\xa7\xc2\x4e\x5a\x20\x0c\x35\x3e\xbd\x7b\xf2\x32\x4e\xff\x52\x16\x80\xb2\x18\xa8\x65\x4b\x6d\xf7\xb0\x46\xaf\xdc\x85\xa7\x8c\xfe\xe1\x74\xa6\xe9\x19\x78\xd4\xaf\x65\x11\xd3\x07\x99\x19\x5d\xf4\x28\x86\xc8\x32\x7d\xcc\x62\x4c\x29\x12\xf8\x3f\xe1\xbb\x63\x02\xec\x71\xa8\xf0\x98\xd5\xe0\x56\xd8\x95\x95\xc4\x60\x06\x2d\x29\xa5\x54\x6e\x5b\xa7\x7e\x0a\x17\x9a\x84\x8f\x03\x3e\x11\xaf\xc1\xa1\x98\x97\xe8\x3c\x2a\xb7\xeb\x58\x20\x72\x22\x15\x67\x67\xeb\xdb\x2e\x24\x26\xae\x2c\x59\x4c\x20\x5d\xa5\x96\x50\x28\x3b\x33\xcb\xf5\x0a\x77\xd6\x07\xde\x9e\x2f\xfe\x0f\x08\x0f\xd7\x73\xc7\xe0\x3f\x20\x50\x5d\xd0\xcb\x15\xcd\x89\x24\xcd\xd6\xb8\x7d\x7f\x61\x5b\xcc\xd2\xeb\x47\x83\x95\x61\xd7\x9a\x02\xca\x9c\xde\x0f\xde\x19\xb5\xa0\xc2\xa9\x0b\xd4\xa0\xc7\x36\x1b\xfd\xad\x53\x74\xac\x42\xb5\x16\x11\x15\x75\x9c\xfa\x2a\xc0\x8c\x16\x79\x5a\xb5\x2c\x84\xc5\x40\x71\x0b\x1d\x1d\x50\x06\xf2\xab\xa0\x98\xc6\xb6\x82\xa5\x1f\x03\xff\x5d\x79\xb6\xbc\xe0\x20\xce\x72\x6f\x7f\xa2\xe7\x68\x51\x38\x08\x7d\x60\x9c\x05\x05\x4a\x9f\x4c\x45\x68\x15\x2e\x89\x00\xd8\x66\xbd\x4a\x98\x0b\x07\xd3\x5b\x83\x36\x47\xd1\xf4\xe2\x65\x75\xd4\xde\x1c\x7a\x7c\xcf\x5c\xd1\x19\xd6\xdb\x4c\x72\xfb\x9c\x24\xe3\xa0\x85\xec\xdd\xe5\x21\xff\x18\xbe\xc6\xc1\x6c\x93\x14\x57\xcd\x8e\x26\x46\x1d\x48\xb5\x5c\x21\x1a\x27\xba\x49\x86\x63\xb3\x4e\xa0\xdc\xfd\x8c\xdf\xa1\x29\x00\xfe\x83\x67\xab\xbe\xac\x8e\x4e\xb1\xa1\x80\x36\xc9\xc1\x69\x49\x35\xa5\x73\xb6\x1a\xfc\x05\xc1\x26\x5a\xaf\xb6\xef\x58\x4e\x82\x3b\x84\x27\x64\xb7\x1d\xca\x33\x18\x37\x64\x9a\x51\xd0\xc9\x6c\xef\xec\x43\x58\x35\xb8\xf4\xb5\xda\xc5\xd1\xf2\x4b\xe9\x4d\x53\x78\xa1\x66\x4e\xfc\x1d\xaf\x55\x70\x15\x65\x7a\xdb\x77\x88\x1c\x5d\x18\x1c\xd9\xd1\xf1\xd3\xd9\x6b\xf7\x4d\x51\x67\x93\x02\x85\xb6\xf9\x8f\xef\x31\xbb\xef\x73\x78\xcf\x2f\x12\xc4\xc4\x79\xf9\x60\x76\xd8\x17\x0d\x76\x8d\xfd\x2f\xe8\x23\xcd\x14\xd6\xd7\x05\x9d\x75\xd9\x54\x7a\xb2\x2a\xda\x6f\xd1\xa3\x64\xae\x76\x29\xe6\xf7\xe4\x66\xa4\xc8\xa4\x94\x83\xe4\x55\x5f\x6c\x08\x81\xfd\x2c\xee\x97\x92\x32\x47\xf2\xca\x83\x9f\x88\xb1\xed\xa7\xc3\xb7\xc7\x5f\x53\x0c\x0f\xd6\x0b\x85\xe8\xb1\x0d\x4b\x58\xd7\xb8\x81\x5b\xbf\x1e\x4f\x42\xa1\x6b\x25\x22\x58\x88\xbd\xa2\x47\xd4\x6b\xe3\x55\x13\x25\xb6\x06\xf6\x1c\xe7\x76\xa9\x2f\x04\x68\x84\xfd\x27\x5e\x82\xd4\xc0\x87\x61\xb6\x0d\x69\x8c\x5a\xdd\xe7\x8d\xed\x62\xd8\x83\x5a\x1b\x23\xb3\xff\x96\x57\x6b\x2c\x19\x8f\x72\x2e\x76\xea\x22\x66\x73\x88\xa4\x4e\xd3\x16\xea\x6d\xc5\xbe\x4b\xd8\x40\x43\x57\x2a\x2a\xfa\x19\xcd\x9a\x84\xef\x5f\xfc\x28\xfb\x0f\x68\x9c\x4c\x25\x26\xce\xc2\x61\x50\x2f\x1e\x0a\xf6\x65\xcb\xde\xf5\x0e\x3a\x66\x9c\x0a\xa1\x36\x43\x07\xc8\x9d\x76\x6d\x58\x69\xe2\xc9\xe4\x14\xca\x21\x67\x35\xc0\x18\x26\xee\xe4\xea\x8b\xcb\x09\xb6\x7a\x8d\xd8\xf7\xed\xb6\x85\x36\xc6\xee\xfa\x0f\xa0\xd7\x8f\x4a\x86\xbd\x70\x48\x2d\x98\x52\xe4\x82\x91\xd1\xe1\x6a\xd1\x14\x34\x77\x9a\x27\x86\x1a\xf8\x19\x2a\x64\x27\x50\x84\xe7\xd9\xe0\x60\x4c\x52\x07\x3c\x33\x24\xb9\x57\x7b\x08\x80\x73\xab\x27\x00\x41\xd0\x41\xcf\x5f\xf1\x88\x31\xb8\x0e\x00\xa2\x73\xb6\x86\x00\x59\xbe\xc4\xa6\xc4\x19\x02\x64\x4e\xf9\x23\xe8\x90\xd5\x58\xb5\xa9\x6e\xf9\xee\xfe\x19\xde\x12\x07\x35\xe9\x89\x87\xa9\x8d\x53\xa5\x6e\x32\x26\xc5\x76\xcd\x2e\xf4\x86\xae\x13\x8f\xf3\xb6\x2e\xae\x33\xca\x91\xf8\xb7\x7d\x3a\x98\xf5\x83\xe8\x63\xd4\xeb\xe5\x3d\x0b\x3f\xa9\x7c\x47\x68\x28\x05\x93\xf9\x35\xf6\x14\x25\x95\xed\x15\x05\x7a\xdf\x8b\x60\x14\x86\x20\x49\x3a\xfe\xb5\xff\x5d\xe1\x7b\x6a\xc2\x6d\x5b\xbb\x7c\xf7\xf4\x71\x32\x64\x2e\xbe\x73\xde\x00\x51\xf0\x73\x61\x0b\x0c\x1e\xae\xf6\x74\x99\x19\xcf\x0e\x87\x14\x4c\x0d\x8f\x70\xee\xab\xb7\xfe\x6c\x2e\x58\xf9\x14\xe5\x44\xe8\xbe\x21\xc2\xf3\xa6\x02\xd6\x1c\xfc\xf0\x17\x65\xe4\x9c\xbc\xd0\xa6\xf9\xb1\x61\x6e\xc5\x6a\x4d\xe6\xe5\x2b\xc9\x79\x84\x0a\x84\x2d\x9b\x2d\xd4\xb5\xd5\x9d\x15\xb3\xce\x85\x13\x8b\xc9\x8c\x1e\x25\x4c\x84\x85\x3b\x67\x26\xb6\xfd\xb7\xbc\x79\xe9\x0d\x34\xbe\x3d\xd8\x6c\x4d\xef\xbf\xac\x94\x38\x80\x29\x2f\xec\x0d\x99\x5c\xdb\x52\x44\x51\x4d\x11\x51\x8e\xfe\x79\x20\x4d\x53\xc9\xcd\xa4\xa4\x87\xbf\x30\xe9\xff\x7f\x28\x6e\x53\x6a\xc1\xfe\x9f\xa1\xa7\x1f\x3e\xed\x0e\x47\xf8\x47\x1e\x88\xdb\x19\xfc\xd3\xe3\x19\x76\x98\x96\x97\x98\xf2\x6d\x5c\x9c\x4b\x8a\x7b\x93\x5a\x0f\xaf\x39\x5d\x2b\xa9\xee\x8c\x57\xe1\x37\x47\xad\x4d\x01\xa2\xee\xca\x7e\x85\x3f\x9c\x52\x73\xfc\x16\x18\x54\xc2\xe9\x66\xf8\x53\xa4\x88\x88\x44\x44\x22\x91\xed\x0b\x3c\x59\x31\x5f\x8c\xba\xe2\xc9\xa4\xaf\x08\x4d\x10\xcb\x4c\x7e\x64\x00\x01\xb7\xf3\x40\x13\x2d\x80\x47\x4c\x6d\xaa\x0e\x00\x9c\x38\x0d\xf0\xfe\xb5\x7d\x5e\xb1\xed\x8b\x40\xcd\xf2\x44\x6c\x8a\x42\x4d\x48\xeb\xe5\x89\x7d\x92\x2e\x42\xf2\x5b\x98\x83\x63\x95\xdb\x51\x3e\x49\x04\xfc\x25\x21\xac\xca\x53\x03\xac\x57\x64\x54\xe6\x02\xd4\xb3\x55\x20\x73\x68\x18\xa8\x46\x83\x79\x00\x0f\x8f\x30\xf9\xe3\x7d\x05\xc7\xbc\x1f\x16\xec\xc9\xac\xb0\xf8\xc6\x30\x96\x67\x75\x57\x5a\x40\x64\xa7\x70\xf7\xb5\x3f\x7c\xa7\xcc\xc0\x0b\xdb\x71\x19\x5d\x53\xcf\x21\xb7\x48\x20\x66\x52\x20\xc0\x57\x85\xb2\x25\xb2\xcb\xe2\x85\x5a\x5a\xe4\x0b\x9b\xce\x9e\x1e\xdd\xb7\x8a\x9e\x4c\x08\x25\xfb\x47\xff\xf9\xe6\xf3\x7a\x95\x54\xd9\xee\x04\x6c\xd1\x8a\x30\x1d\xae\xe2\x6e\xc5\xee\xf4\xf1\x01\x25\x6e\x0c\x59\xdf\x35\xcb\xb5\x19\x2f\x80\x16\x2b\xa3\x93\x7d\xbf\x36\x19\x98\x7b\xf1\x8b\x1d\x69\xd6\xe6\xe0\xc4\x2f\xea\xd7\xf0\xed\x6d\x2c\xf5\x4d\xa7\x8f\x87\x49\x60\xe4\x45\xa1\x08\xb7\xbb\x09\x87\xcb\x94\x27\xe1\x02\x3a\x1c\x85\xc2\x72\xc1\x0b\xca\x78\x1f\x98\xc7\x6e\x10\x67\x39\x24\xe6\x58\xe7\x36\xcc\x54\x4a\xfc\x0c\xde\xcd\xe8\xe5\x8d\x14\xa1\x8e\x4b\x74\x21\x50\x75\x1a\x46\xa1\x4d\x90\xd7\x10\xa9\xea\x82\x26\x6e\x46\x65\x4b\xbc\x15\x36\x85\xc1\x95\x99\x8b\x09\x23\xcc\xe3\x13\x50\xb7\x9b\x20\x39\xf2\x38\x55\xdc\x3b\xa1\x14\x38\xb1\x5c\xc0\x3a\xaa\xd9\xd3\x1b\x58\x19\xc4\xb4\x12\x34\xe9\x3a\x30\x61\x55\x47\x9a\x6b\xd4\x5d\xf8\x4e\x1c\xf9\xe8\xd8\xea\x0e\x89\x6d\x92\x88\xd2\xe4\x8d\x87\x30\xd8\x6b\xf8\x99\x7c\x62\xa8\x37\x8a\xd9\x59\x25\x67\x2d\xef\xba\xa1\xc9\xcb\xa3\x15\xce\x1e\x64\xf8\x61\x6b\x17\x4b\x88\xc5\x7a\xb7\x80\x74\x8a\xe9\x6c\xdb\xe3\x6d\xc4\xd7\x90\x54\xfd\xd7\xbe\xc3\xb4\x0b\x1f\xc7\xb1\x26\x6e\x19\x7c\xa7\xfe\x41\xd0\x74\x3a\xd9\xa8\xa1\x04\x30\xa4\xe1\xcc\xed\xf8\xaa\x48\x62\x3f\xff\xa2\xbf\xd3\x30\x36\x4b\x0e\x3a\xa1\xdb\x7d\x9b\x9a\xa4\xca\x8e\x17\xd9\x3c\x91\x6d\x6a\xfe\x57\xd3\x3f\x7b\x05\x9b\x67\x0b\xba\x34\xbc\xee\xd5\x11\x65\xff\xc0\xdc\xa6\xaf\x53\x2e\xb3\xef\x97\x6b\x29\x6e\x97\x5c\xe2\x5b\x40\xec\x63\x9c\xa4\x35\x93\xb2\x59\x46\xba\x82\xa8\x19\xe8\xf1\xaf\xa7\xdf\xa3\x45\xf3\x5c\xc0\x8b\xf3\xe7\x73\x02\x88\x6c\xaf\x08\xe1\x43\x24\x45\xf6\x7d\xc5\x9c\x69\x85\xe7\xf8\xc9\xbb\xc8\xa6\x8a\x39\x25\xe2\x0c\x14\xbd\xd2\xb6\x92\x2b\xc9\x24\x32\x1f\x58\x23\xdf\x51\x18\x34\xf2\xa2\x9e\x4d\x7e\x32\x0f\x96\x3c\x7a\xd3\xa1\x52\x22\xaf\xa2\x2a\x98\x37\x51\x47\xfb\x3f\x43\x33\xf5\xb8\xc1\x39\xa1\x04\x5d\x3c\xc6\xde\x57\xb2\x4a\x23\x41\xcc\x16\xb3\xdf\xe0\x69\xa3\x58\x65\xb8\x52\xc2\xf8\x4f\xd4\xec\x28\xec\x17\x8f\xd0\xb9\xff\x32\xe1\xe5\x29\xbf\x3d\xc9\x69\xae\x17\xdb\x13\x96\xc2\xcb\xa7\x4b\x6a\xd4\xb8\x32\x07\xea\xb4\xb1\x2c\x93\x60\x4d\xa7\xeb\xbd\x03\x9b\xae\x1e\xa1\xcb\xf5\xc9\x79\x87\x0e\x8e\x87\xae\xc0\xc8\x83\xe8\xb9\x52\xbe\xc1\x98\x67\x60\x40\x3b\x19\x3e\x16\x5f\xff\x20\xff\x51\x60\xa4\x34\xbd\x25\xa7\xcb\xec\xc4\xf8\xb9\xb7\xa5\x5b\x41\x29\x6f\x96\x09\x34\x2b\x8a\x76\xaf\xb6\xab\x98\x91\xbd\x17\x42\x70\x8a\x99\xf3\x4a\x56\xef\xc1\x39\x20\x0f\x1b\x5f\xe1\x57\xbb\x27\x62\x40\xe7\xe2\xa0\xa0\xf4\xea\x59\x1a\xc0\xb2\x4a\x21\xcc\xd1\xcc\x4e\xf6\xc8\xba\xa0\x82\xde\xa2\x3f\xe5\x49\x90\x1e\xcb\xe7\x8c\x47\x4b\x27\x54\x33\x49\x05\x9f\x91\x15\xa5\x91\x39\xe4\x5e\xe6\xf9\xff\x40\x52\x38\x54\x22\xc9\x38\x61\x59\x4f\xe9\x89\xfa\x84\xd2\x82\x1d\x63\xea\x55\xd9\x32\x7d\x70\x19\xe9\x12\xf7\xeb\xae\xbf\x24\xbf\x21\x16\xcc\xc1\xa6\xa2\x83\xc3\x97\xba\x3c\xaa\x5e\xa8\xd4\x4a\xc7\x36\x78\x3f\xb4\xef\x27\x15\x95\x70\xae\xf5\x11\x56\xe9\x0e\x69\x4f\xaa\x6d\x1a\x9e\x19\x21\xd8\xd1\xb1\x87\xc3\xea\x36\x7f\x33\x08\xcf\xe1\xb7\x41\x2a\x55\x8b\xf3\xce\x7f\xfe\xf3\x0f\x89\x27\xe4\x96\x12\x6e\x3e\xfe\x17\x1f\x4b\xee\xf7\x1b\xae\x80\xd3\x63\xf5\xb7\x3a\xa8\xf7\xa9\x12\x82\x42\x6c\xa3\xc7\xf0\x88\xe4\x25\x56\xc5\x65\x45\xbd\x0d\xe1\x96\x96\xd7\xb6\x07\x37\x65\x80\x08\xfd\x63\xc2\x3f\xef\xdc\xf5\x5a\x33\x58\x46\xb1\xa1\xda\xba\x80\x40\x4b\x4f\xc4\x87\xd1\x9f\x32\xe3\xad\x86\x81\x39\x0f\x2c\x57\xa2\x09\x74\x24\x4f\xd1\x12\xdd\x0c\x88\x30\xe4\x11\x60\xd5\xd7\x40\x59\x95\x13\xae\x0c\x03\xa9\x08\xa0\x08\xeb\x41\x19\x68\xd5\x3f\x5b\x9c\x1d\x8d\xd4\xf3\xf0\x36\x55\x92\xe6\x26\xf4\xf2\x01\x68\x52\x1a\x58\x73\x97\x67\xb1\x8c\xf2\x40\x0c\xa6\xf6\x97\xcc\xea\x44\x63\xaa\x90\x38\x90\x92\xf3\x5e\xca\x8a\x4b\x1b\x7c\x5d\xa0\x42\x83\xa6\x7b\x0f\xb1\x3f\x36\x04\x73\x76\xbf\x35\x91\xae\xbd\x37\xab\xf5\x08\xb3\x66\xf5\xb6\xf5\x44\x2f\x41\xc0\x57\x2f\xc8\xea\x15\xb5\xd9\x2c\xc3\x47\x9d\x01\x8e\x57\xd7\x2d\xbc\x1b\x03\x71\x0d\xae\x0a\x3e\x27\xf9\x2a\x6d\x96\xf0\x19\x2b\x7d\x63\xaf\x28\x27\xe6\x93\x92\x6c\x08\xf1\x30\x39\xe8\xf8\xc9\xec\x97\xd5\xff\xb3\x4e\x5e\xc2\x5f\x17\x55\x96\x4d\xf0\x48\xd2\x2f\x48\xee\xd1\x75\x6b\xf1\x66\x0c\x61\x9f\xb1\xa0\x36\x90\x1f\xd9\xad\x59\x04\xee\x35\x4e\x90\x17\x4b\x12\xee\x8d\x44\x99\xe1\x8f\x69\x9f\x6f\x8b\xdc\xfa\x19\x59\xb5\xad\xdb\xa3\xf4\x0e\xeb\xc7\x27\x59\x4c\x7d\x26\x7f\x5f\x12\x3e\xd2\x5d\xb5\x0e\xb9\x82\x88\xc2\xd5\x14\x16\xa1\x20\x59\x7f\x4e\xc0\xeb\xaa\x08\xa9\xf1\xaf\xa7\xa9\x2d\x63\xde\x95\x41\xd1\xd1\x13\xc8\xd6\x45\xbf\x02\x79\xdb\x6e\x7e\x1d\x0a\xe7\x1b\x78\x5e\x47\xe1\x40\x63\xec\xfb\x14\x86\x04\xd4\xb9\xe2\xba\x9a\xc9\x07\x44\xb6\xbf\xaa\xb6\x37\xe3\xe1\x5d\x4e\xea\x24\xcb\x4e\x9c\x76\xd8\xef\xa7\x50\xa7\xbe\x5c\x52\x41\xa4\x6c\x59\x6f\xd3\x96\x88\xb0\xdd\x52\xe5\x40\x64\x1c\x3f\x98\xd7\x09\x5c\x63\x47\xdd\xeb\xd3\x1c\xce\x61\x93\x80\x46\x07\xd3\x4f\xf8\x2f\x3e\x0d\xcc\xc9\x81\xa6\x8e\x0d\x69\x0a\x8b\x80\x6f\xf7\x57\xbb\x11", 4096); syscall(SYS_ioctl, (intptr_t)r[2], 0xc0f24413, 0x100005c0); break; case 10: *(uint8_t*)0x10000000 = 0; *(uint8_t*)0x10000001 = 0; *(uint8_t*)0x10000002 = 0; *(uint8_t*)0x10000003 = 0; *(uint8_t*)0x10000004 = 0; *(uint8_t*)0x10000005 = 0; *(uint8_t*)0x10000006 = -1; *(uint8_t*)0x10000007 = -1; *(uint8_t*)0x10000008 = -1; *(uint8_t*)0x10000009 = -1; *(uint8_t*)0x1000000a = -1; *(uint8_t*)0x1000000b = -1; *(uint16_t*)0x1000000c = htobe16(0x8100); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 1, 0, 3); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 1, 3, 1); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 4, 4, 12); *(uint16_t*)0x10000010 = htobe16(0x806); *(uint16_t*)0x10000012 = htobe16(1); *(uint16_t*)0x10000014 = htobe16(0x800); *(uint8_t*)0x10000016 = 6; *(uint8_t*)0x10000017 = 4; *(uint16_t*)0x10000018 = htobe16(9); *(uint8_t*)0x1000001a = 0xaa; *(uint8_t*)0x1000001b = 0xaa; *(uint8_t*)0x1000001c = 0xaa; *(uint8_t*)0x1000001d = 0xaa; *(uint8_t*)0x1000001e = 0xaa; *(uint8_t*)0x1000001f = 0xbb; *(uint32_t*)0x10000020 = htobe32(0xe0000001); *(uint8_t*)0x10000024 = 0xaa; *(uint8_t*)0x10000025 = 0xaa; *(uint8_t*)0x10000026 = 0xaa; *(uint8_t*)0x10000027 = 0xaa; *(uint8_t*)0x10000028 = 0xaa; *(uint8_t*)0x10000029 = 0xbb; *(uint32_t*)0x1000002a = htobe32(-1); break; case 11: memcpy((void*)0x10000040, "\x0f\x5a\x60\xb0\x06\xc4\xe1\x01\x6b\xd7\x65\x2f\xc4\xe1\xf8\x11\x81\x00\x00\x00\x80\xc4\xc1\x19\x60\x18\x3e\x67\x3e\x0f\x01\xd9\xf2\xe1\xab\xf3\xee\x66\x0f\x14\x8b\xf1\xff\xff\xff", 45); syz_execute_func(0x10000040); break; case 12: break; } } int main(void) { syscall(SYS_mmap, 0x10000000, 0x1000000, 7, 0x1012, -1, 0); for (procid = 0; procid < 4; procid++) { if (fork() == 0) { use_temporary_dir(); do_sandbox_none(); } } sleep(1000000); return 0; } :352:11: error: use of undeclared identifier 'SYS_freebsd12_closefrom' syscall(SYS_freebsd12_closefrom, (intptr_t)r[1]); ^ 1 error generated. compiler invocation: clang [-o /tmp/syz-executor391428036 -DGOOS_freebsd=1 -DGOARCH_386=1 -DHOSTGOOS_freebsd=1 -x c - -m32 -O2 -pthread -Wall -Werror -Wparentheses -Wunused-const-variable -Wframe-larger-than=16384 -static -lc++ -Wno-overflow] --- FAIL: TestGenerate/freebsd/386/3 (1.26s) csource_test.go:108: opts: {Threaded:true Collide:false Repeat:false RepeatTimes:0 Procs:0 Slowdown:1 Sandbox:none Fault:false FaultCall:0 FaultNth:0 Leak:false NetInjection:false NetDevices:false NetReset:false Cgroups:false BinfmtMisc:false CloseFDs:false KCSAN:false DevlinkPCI:false USB:false VhciInjection:false Wifi:false IEEE802154:false Sysctl:false UseTmpDir:true HandleSegv:false Repro:false Trace:false} program: getsockopt$inet6_sctp_SCTP_EVENT(0xffffffffffffff9c, 0x84, 0x1e, &(0x7f0000000000)={0x0, 0x4, 0x1}, &(0x7f0000000040)=0x8) getsockopt$inet6_sctp_SCTP_MAX_BURST(0xffffffffffffffff, 0x84, 0x19, &(0x7f0000000080)={0x0, 0x7fff}, &(0x7f00000000c0)=0x8) r0 = dup(0xffffffffffffffff) setsockopt$inet6_sctp_SCTP_ADAPTATION_LAYER(r0, 0x84, 0x8, &(0x7f0000000100)={0x7}, 0x4) readv(r0, &(0x7f0000000540)=[{&(0x7f0000000140)=""/149, 0x95}, {&(0x7f0000000200)=""/179, 0xb3}, {&(0x7f00000002c0)=""/172, 0xac}, {&(0x7f0000000380)=""/182, 0xb6}, {&(0x7f0000000440)=""/206, 0xce}], 0x5) thr_wake(0xffffffffffffffff) r1 = socket$inet_udplite(0x2, 0x2, 0x88) freebsd12_closefrom(r1) r2 = open(&(0x7f0000000580)='./file0\x00', 0x4, 0x40) ioctl$DIOCGETSTATE(r2, 0xc0f24413, &(0x7f00000005c0)="2a368a90b488d04ee1eccd139778043b00a6f81a3627b593b0dfce33265cda8fba8b0fa538b3e364ad1d1f7de1011c63f592a64dd0ec953f9c050f991f42d24d7bc47c4d5bf323e393605e59a1eb5bc4e948f83890911ed35b53a2b0d63db79dc21d6190f8b434d6ff85e54fb9a28a7566d1a24337e72e82acc9e518339acac7dd8960a1c9c5cb3da9e6bc0b697e9dbbc60fa8b72c3719286bf44c2e8fc8356e9125eae9bed216f349c292c989d7dcd252dfb79c4fdbdc865109f1e3cf9cd67cfa8babb7d3627ce0080910c5755c92cbb2c159172a65ea8a2085f4ce10e1436ef2f7d6f1db702a387cd35681293331bd1bdbd690274a7c372f84e4d5748791d707ee5c127eda8b84596b0c10890c881006beb38ad56d139d8c74f14f3598de551ee3a13466e67cb3d2c5fd909061522058ffbe9ae431325544c894b9841a4c253632a332c6e0d881645f90b6337db99b7fad1bd162f73d11ce5e57d5f321fb68a795c990662a35706af845b5383fe50ba8637613dd43aa7cf20020355218e060af2658866349197f30c835351bd69683baaab8be6b4da04fb35a423314fab610b8d1cf0440fedb28a5e19584ef7867bd962ba4ede513af03dda669f76c67d28fb507d5762c61d528f1cf3a7c563eee1c04106254ce3fd821c17a0defc37d79a5de7ef9352c7b411c953958d254d0d3e5ae618a68a53e45809d493c474a208ccc0f170df4836d0593b7b7ce874fa01fe0415a594f941c31f0784aad394f06b8537029555ccc73eaab0b36846fe5cc6e92db0c90a62d1d36c382c351921789dfbe0f60b13db0814aaf4fa6f813a7cf2ad12ebe1050eef92768c313718d8db202e3d1093dcf5933451efd9b72ee4ef75dfc0ea0afffb81bbee550382b6b1212cea097b709aec7c0a85799127d01376f7bd6f255732972f889b6843f615478ee23124737f813b18f3133af12b4e41e70bea058b00a5f965ed2377b48916bc2a7162adbf7bc9ca11aeaaf88c2f5229af6dd3861574a0d5d5ae482f2d7e86d172005cca565b12b199a7d81087d85776d613940b48735266d45a4ad11e168e89b893e650b984b483abb318f432f13c61f26f3deabc6b45dcf5ff4579da89a9d23251d1a6bec122cb210fc3afa89102395e1d26b14ca4180c1b6fe0b3000049550283b618ab1fd6b165855b297d9457ac54946fb99e6f0d8872db87934347b6d9a38a731bf8bd08f2a7a7d80d4cf24fa9a16c209a18494133d6dd0d292efeba7872c4d7bdfafd416e634cf90ab4dc9bccc643227a05552eee0f916ec202dcb011c8394b10996873a0a4b7aee1514f595d23289a3bf62085b0aeea0009206e7a7061ad866352241708acbcf3c2fc0fdcaaaa8b3be8e510b99e04b96ddafa9f8483b7a568c5ebaddad5677d9144a270d0444aea3c0775d241d79baea30dc4bb19a712471f112838c7525496d4a8fa66658610347d490af85305ceabf0f35ac277f2ef1b6a8e5813ce0bea587e627d725f1db1241222acd41e16c8a32bdb40778d4a10f87b1e90e006dfc03d2934589d25965240ee9c21419a2aa5bd8f3fcd3208f9b52155513a6da73468dc0703102bcca0eba18e88c19da64ab5c6bf6cb8109730153693332f7e160862719dc08175ed074f5bf2887705501331cf75254fce0e145ac2241875293036f2aa96592194073d04754c26f19e7763332b43d0287a28347d5155bacfd32628f500d9e9c04f5369f6317e606e422f98c48b11f755b2b0fdc79494a769700d35a88a330f02cab2fb7b65049e2d1e350a6e02d5d54ac7c85f268c0eaf77071d5acabed99429030d00b30c4caa21ce322d4f780e892201129ff772d22cc4d4c274b479948d22acfc1760b2917ff308e9a3aa22779bd0f453d11e0dee788dcf95b7be90c3b3b3a7fe535da503c381e346eb2a0b0e375ad726ee2a38919810d5c545edcea1b23109a3fb68e30c01cc704a9d23ae55d18cc9fdff02bd484d59f468d75a796657fdca59f55d4be7efd7378a31685334adc0cacaef9af5649da85dc6c5989cf8e2b9977a62a8ca8bc27782b1b3028a4de9a0e87dbab7879144e40a811f0b1b2880d26823c990adeb7df41116fcf6022a08d87ac7c63ecdff796dafa082e5cd85d6c3f17f8740ea1e9a0c886e0cd7074c45dbc2dc7b34c6859e06a0cee9b20ce43724a414eb77b0b804dffcc7bc44dab7fa02a3836eae396f9ede48d6deea333b0a990ebbcd1b336bb73d8e72c72e12449f1ca720a3bcd9788d1dcdde51214b771a1ca1389ebb5a05645acf97315651ae886ecd5f009a7cc62bfc49459b71fea3f8adc05d37129781ac9073eb83f1eeb1fc84a90c8316c36164259a7c24e5a200c353ebd7bf2324eff521680b218a8654b6df7b046afdc85a78cfee174a6e91978d4af6511d30799195df42886c8327dcc624c2912f83fe1bb6302ec71a8f098d5e056d89595c460062d29a5546e5ba77e0a179a848f033e11afc1a19897e83c2ab7eb58207222156767ebdb2e2426ae2c594c205da59650283b33cbf50a77d607de9e2ffe0f080fd773c7e03f20505dd0cb15cd8924cdd6b87d7f615bccd2eb47839561d79a02ca9cde0fde19b5a0c2a90bd4a0c7361bfdad5374ac42b5161115759cfa2ac08c16795ab52c84c540710b1d1d5006f2aba098c6b682a51f03ff5d79b6bce020ce726f7fa2e7685138087d609c05054a9f4c4568152e8900d866bd4a980b07d35b833647d1f4e26575d4de1c7a7ccf5cd119d6db4c72fb9c24e3a085ecdde521ff18bec6c16c931457cd8e26461d48b55c211a27ba498663b34ea0dcfd8cdfa12900fe8367abbeac8e4eb1a18036c9c1694935a573b61afc05c1265aafb6ef584e823b842764b71dca331837649a51d0c96cefec435835b8f4b5dac5d1f24be94d5378a1664efc1daf557015657adb77881c5d181cd9d1f1d3d96bf74d5167930285b6f98fef31bbef7378cf2f12c4c479f96076d8170d768dfd2fe823cd14d6d7059d75d9547ab22ada6fd1a364ae7629e6f7e466a4c8a49483e4555f6c0881fd2cee97923247f2ca839f88b1eda7c3b7c75f530c0fd60b85e8b10d4b58d7b8815bbf1e4f42a16b25225888bda247d46be3551325b606f61ce776a92f046884fd275e82d4c08761b60d698c5adde78ded62d8835a1b23b3ff96576b2c198f722e76ea22667388a44ed316ea6dc5be4bd84043572a2afa19cd9a84ef5ffc28fb0f689c4c2526cec261502f1e0af665cbdef50e3a669c0aa1364307c89d766d5869e2c9e414ca216735c01826eee4ea8bcb09b67a8dd8f7edb68536c6eefa0fa0d78f4a86bd70482d9852e48291d1e16ad11434779a27861af8192a64275084e7d9e0604c52073c3324b9577b088073ab270041d041cf5ff18831b80e00a273b6860059bec4a6c41902644ef923e890d558b5a96ef9eefe19de120735e98987a98d53a56e3226c576cd2ef486ae138ff3b62eae33ca91f8b77d3a98f583e863d4ebe53d0b3fa97c4768280593f935f6142595ed15057adf8b60148620493afeb5ff5de17b6ac26d5bbb7cf7f47132642ebe73de0051f073610b0c1eaef6749919cf0e87144c0d8f70eeabb7fe6c2e58f914e544e8be21c2f3a602d61cfcf01765e49cbcd0a6f9b1616ec56a4de6e52bc979840a842d9b2dd4b5d59d15b3ce85138bc98c1e254c84853b6726b6fdb7bc79e90d34be3dd86c4defbfac943880292fec0d995cdb5244514d11518efe79204d53c9cda4a487bf30e9ff7f286e536ac1fe9fa1a71f3eed0e47f8471e88db19fcd3e3197698969798f26d5c9c4b8a7b935a0faf395d2ba9ee8c57e13747ad4d01a2eeca7e853f9c5273fc161854c2e966f853a4888844442291ed0b3c59315f8cbae2c9a4af084d10cb4c7e640001b7f340132d80474c6daa0e009c380df0feb57d5eb1ed8b40cdf2446c8a424d48ebe5897d922e42f25b98836395db513e4904fc2521acca5303ac576454e602d4b35520736818a8468379000f8f30f9e37d05c7bc1f16ecc9acb0f8c630966775575a4064a770f7b53f7ca7ccc00bdb71195d53cf21b74820665220c05785b225b2cbe2855a5ae40b9bce9e1eddb78a9e4c0825fb47fff9e6f37a9554d9ee046cd18a301daee26ec5eef4f101256e0c59df35cbb5192f80162ba3937dbf3619987bf18b1d69d6e6e0c42fead7f0ed6d2cf54da78f874960e445a108b7bb0987cb9427e1023a1c85c272c10bca781f98c76e10673924e658e736cc544afc0cdecde8e58d14a18e4b742150751a46a14d90d710a9ea82266e46654bbc153685c195998b0923cce31350b79b2039f23855dc3ba11438b15cc03aaad9d31b5819c4b41234e93a306155479a6bd45df84e1cf9e8d8ea0e896d9288d2e48d8730d86bf8997c62a8378ad95925672defbaa1c9cba315ce1e64f8616b174b88c57ab780748ae96cdbe36dc4d79054fdd7bec3b40b1fc7b1266e197ca7fe41d0743ad9a8a10430a4e1ccedf8aa48623fffa2bfd330364b0e3aa1db7d9b9aa4ca8e17d93c916d6afe57d33f7b059b670bba34bceed51165ffc0dca6af532eb3ef976b296e975ce25b40ec639ca43593b25946ba82a819e8f1afa7dfa345f35cc08bf3e77302886caf08e1432445f67dc59c6985e7f8c9bbc8a68a3925e20c14bdd2b6922bc924321f5823df511834f2a29e4d7e320f963c7ad3a15222afa22a98375147fb3f4333f5b8c139a1045d3cc6de57b24a2341cc16b3dfe069a35865b852c2f84fd4ec28ec178fd0b9ff32e1e529bf3dc969ae17db1396c2cba74b6ad4b83207eab4b12c93604da7ebbd039bae1ea1cbf5c979870e8e87aec0c883e8b952bec1986760403b193e165fff20ff5160a434bd25a7cbecc4f8b9b7a55b41296f9609342b8a76afb6ab9891bd1742708a99f34a56efc139200f1b5fe157bb276240e7e2a0a0f4ea591ac0b24a21ccd1cc4ef6c8baa082dea23fe549901ecbe78c474b27543349059f9115a59139e45ee6f9ff4052385422c93861594fe989fa84d2821d63ea55d9327d7019e912f7ebaebf24bf2116ccc1a6a283c397ba3caa5ea8d44ac736783fb4ef27159570aef51156e90e694faa6d1a9e1921d8d1b187c3ea367f3308cfe1b7412a558bf3ce7ffef30f8927e496126e3efe171f4beef71bae80d363f5b73aa8f7a91282426ca3c7f088e42556c56545bd0de19696d7b60737658008fd63c23fefdcf55a335846b1a1daba80404b4fc487d19f32e3ad8681390f2c57a20974244fd112dd0c8830e41160d5d740599513ae0c03a908a008eb411968d53f5b9c1d8dd4f3f0365592e626f4f20168521a58739767b18cf2400ca6f697ccea4463aa90389092f35eca8a4b1b7c5da04283a67b0fb13f36047376bf3591aebd37abf508b366f5b6f5442f41c0572fc8ea15b5d92cc3479d018e57d72dbc1b03710dae0a3e27f92a6d96f0192b7d63af2827e693926c08f13039e8f8c9ec97d5ffb34e5ec25f1755964df048d22f48eed1756bf1660c619fb1a036901fd9ad5904ee354e90174b12ee8d4499e18f699f6f8bdcfa1959b5addba3f40eebc727594c7d267f5f123ed25db50eb98288c2d51416a120597f4ec0ebaa08a9f1afa7a92d63de9541d1d113c8d645bf0279db6e7e1d0ae71b785e47e14063ecfb148604d4b9e2ba9ac90744b6bfaab637e3e15d4eea24cb4e9c76d8efa750a7be5c5241a46c596fd39688b0dd52e540641c3f98d7095c6347ddebd31cce6193804607d34ff82f3e0dccc981a68e0d690a8b806ff757bb11") syz_emit_ethernet(0x2e, &(0x7f0000000000)={@empty, @broadcast, [{[], {0x8100, 0x1, 0x1, 0x4}}], {@arp={0x806, @ether_ipv4={0x1, 0x800, 0x6, 0x4, 0x9, @remote, @multicast1, @remote, @broadcast}}}}) syz_execute_func(&(0x7f0000000040)="0f5a60b006c4e1016bd7652fc4e1f8118100000080c4c11960183e673e0f01d9f2e1abf3ee660f148bf1ffffff") syz_extract_tcp_res(&(0x7f0000000080), 0x7fffffff, 0x7) csource_test.go:109: failed to build program: // autogenerated by syzkaller (https://github.com/google/syzkaller) #define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include static void sleep_ms(uint64_t ms) { usleep(ms * 1000); } static uint64_t current_time_ms(void) { struct timespec ts; if (clock_gettime(CLOCK_MONOTONIC, &ts)) exit(1); return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000; } static void use_temporary_dir(void) { char tmpdir_template[] = "./syzkaller.XXXXXX"; char* tmpdir = mkdtemp(tmpdir_template); if (!tmpdir) exit(1); if (chmod(tmpdir, 0777)) exit(1); if (chdir(tmpdir)) exit(1); } static void thread_start(void* (*fn)(void*), void* arg) { pthread_t th; pthread_attr_t attr; pthread_attr_init(&attr); pthread_attr_setstacksize(&attr, 128 << 10); int i = 0; for (; i < 100; i++) { if (pthread_create(&th, &attr, fn, arg) == 0) { pthread_attr_destroy(&attr); return; } if (errno == EAGAIN) { usleep(50); continue; } break; } exit(1); } typedef struct { pthread_mutex_t mu; pthread_cond_t cv; int state; } event_t; static void event_init(event_t* ev) { if (pthread_mutex_init(&ev->mu, 0)) exit(1); if (pthread_cond_init(&ev->cv, 0)) exit(1); ev->state = 0; } static void event_reset(event_t* ev) { ev->state = 0; } static void event_set(event_t* ev) { pthread_mutex_lock(&ev->mu); if (ev->state) exit(1); ev->state = 1; pthread_mutex_unlock(&ev->mu); pthread_cond_broadcast(&ev->cv); } static void event_wait(event_t* ev) { pthread_mutex_lock(&ev->mu); while (!ev->state) pthread_cond_wait(&ev->cv, &ev->mu); pthread_mutex_unlock(&ev->mu); } static int event_isset(event_t* ev) { pthread_mutex_lock(&ev->mu); int res = ev->state; pthread_mutex_unlock(&ev->mu); return res; } static int event_timedwait(event_t* ev, uint64_t timeout) { uint64_t start = current_time_ms(); uint64_t now = start; pthread_mutex_lock(&ev->mu); for (;;) { if (ev->state) break; uint64_t remain = timeout - (now - start); struct timespec ts; ts.tv_sec = remain / 1000; ts.tv_nsec = (remain % 1000) * 1000 * 1000; pthread_cond_timedwait(&ev->cv, &ev->mu, &ts); now = current_time_ms(); if (now - start > timeout) break; } int res = ev->state; pthread_mutex_unlock(&ev->mu); return res; } #define BITMASK(bf_off,bf_len) (((1ull << (bf_len)) - 1) << (bf_off)) #define STORE_BY_BITMASK(type,htobe,addr,val,bf_off,bf_len) *(type*)(addr) = htobe((htobe(*(type*)(addr)) & ~BITMASK((bf_off), (bf_len))) | (((type)(val) << (bf_off)) & BITMASK((bf_off), (bf_len)))) static void sandbox_common() { struct rlimit rlim; rlim.rlim_cur = rlim.rlim_max = 128 << 20; setrlimit(RLIMIT_AS, &rlim); rlim.rlim_cur = rlim.rlim_max = 8 << 20; setrlimit(RLIMIT_MEMLOCK, &rlim); rlim.rlim_cur = rlim.rlim_max = 1 << 20; setrlimit(RLIMIT_FSIZE, &rlim); rlim.rlim_cur = rlim.rlim_max = 1 << 20; setrlimit(RLIMIT_STACK, &rlim); rlim.rlim_cur = rlim.rlim_max = 0; setrlimit(RLIMIT_CORE, &rlim); rlim.rlim_cur = rlim.rlim_max = 256; setrlimit(RLIMIT_NOFILE, &rlim); } static void loop(); static int do_sandbox_none(void) { sandbox_common(); loop(); return 0; } static long syz_execute_func(volatile long text) { ((void (*)(void))(text))(); return 0; } struct thread_t { int created, call; event_t ready, done; }; static struct thread_t threads[16]; static void execute_call(int call); static int running; static void* thr(void* arg) { struct thread_t* th = (struct thread_t*)arg; for (;;) { event_wait(&th->ready); event_reset(&th->ready); execute_call(th->call); __atomic_fetch_sub(&running, 1, __ATOMIC_RELAXED); event_set(&th->done); } return 0; } static void loop(void) { int i, call, thread; for (call = 0; call < 13; call++) { for (thread = 0; thread < (int)(sizeof(threads) / sizeof(threads[0])); thread++) { struct thread_t* th = &threads[thread]; if (!th->created) { th->created = 1; event_init(&th->ready); event_init(&th->done); event_set(&th->done); thread_start(thr, th); } if (!event_isset(&th->done)) continue; event_reset(&th->done); th->call = call; __atomic_fetch_add(&running, 1, __ATOMIC_RELAXED); event_set(&th->ready); event_timedwait(&th->done, 50); break; } } for (i = 0; i < 100 && __atomic_load_n(&running, __ATOMIC_RELAXED); i++) sleep_ms(1); } uint64_t r[3] = {0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff}; void execute_call(int call) { intptr_t res = 0; switch (call) { case 0: *(uint32_t*)0x10000000 = 0; *(uint16_t*)0x10000004 = 4; *(uint8_t*)0x10000006 = 1; *(uint32_t*)0x10000040 = 8; syscall(SYS_getsockopt, 0xffffff9c, 0x84, 0x1e, 0x10000000, 0x10000040); break; case 1: *(uint32_t*)0x10000080 = 0; *(uint32_t*)0x10000084 = 0x7fff; *(uint32_t*)0x100000c0 = 8; syscall(SYS_getsockopt, -1, 0x84, 0x19, 0x10000080, 0x100000c0); break; case 2: res = syscall(SYS_dup, -1); if (res != -1) r[0] = res; break; case 3: *(uint32_t*)0x10000100 = 7; syscall(SYS_setsockopt, (intptr_t)r[0], 0x84, 8, 0x10000100, 4); break; case 4: *(uint32_t*)0x10000540 = 0x10000140; *(uint32_t*)0x10000544 = 0x95; *(uint32_t*)0x10000548 = 0x10000200; *(uint32_t*)0x1000054c = 0xb3; *(uint32_t*)0x10000550 = 0x100002c0; *(uint32_t*)0x10000554 = 0xac; *(uint32_t*)0x10000558 = 0x10000380; *(uint32_t*)0x1000055c = 0xb6; *(uint32_t*)0x10000560 = 0x10000440; *(uint32_t*)0x10000564 = 0xce; syscall(SYS_readv, (intptr_t)r[0], 0x10000540, 5); break; case 5: syscall(SYS_thr_wake, -1); break; case 6: res = syscall(SYS_socket, 2, 2, 0x88); if (res != -1) r[1] = res; break; case 7: syscall(SYS_freebsd12_closefrom, (intptr_t)r[1]); break; case 8: memcpy((void*)0x10000580, "./file0\000", 8); res = syscall(SYS_open, 0x10000580, 4, 0x40); if (res != -1) r[2] = res; break; case 9: memcpy((void*)0x100005c0, "\x2a\x36\x8a\x90\xb4\x88\xd0\x4e\xe1\xec\xcd\x13\x97\x78\x04\x3b\x00\xa6\xf8\x1a\x36\x27\xb5\x93\xb0\xdf\xce\x33\x26\x5c\xda\x8f\xba\x8b\x0f\xa5\x38\xb3\xe3\x64\xad\x1d\x1f\x7d\xe1\x01\x1c\x63\xf5\x92\xa6\x4d\xd0\xec\x95\x3f\x9c\x05\x0f\x99\x1f\x42\xd2\x4d\x7b\xc4\x7c\x4d\x5b\xf3\x23\xe3\x93\x60\x5e\x59\xa1\xeb\x5b\xc4\xe9\x48\xf8\x38\x90\x91\x1e\xd3\x5b\x53\xa2\xb0\xd6\x3d\xb7\x9d\xc2\x1d\x61\x90\xf8\xb4\x34\xd6\xff\x85\xe5\x4f\xb9\xa2\x8a\x75\x66\xd1\xa2\x43\x37\xe7\x2e\x82\xac\xc9\xe5\x18\x33\x9a\xca\xc7\xdd\x89\x60\xa1\xc9\xc5\xcb\x3d\xa9\xe6\xbc\x0b\x69\x7e\x9d\xbb\xc6\x0f\xa8\xb7\x2c\x37\x19\x28\x6b\xf4\x4c\x2e\x8f\xc8\x35\x6e\x91\x25\xea\xe9\xbe\xd2\x16\xf3\x49\xc2\x92\xc9\x89\xd7\xdc\xd2\x52\xdf\xb7\x9c\x4f\xdb\xdc\x86\x51\x09\xf1\xe3\xcf\x9c\xd6\x7c\xfa\x8b\xab\xb7\xd3\x62\x7c\xe0\x08\x09\x10\xc5\x75\x5c\x92\xcb\xb2\xc1\x59\x17\x2a\x65\xea\x8a\x20\x85\xf4\xce\x10\xe1\x43\x6e\xf2\xf7\xd6\xf1\xdb\x70\x2a\x38\x7c\xd3\x56\x81\x29\x33\x31\xbd\x1b\xdb\xd6\x90\x27\x4a\x7c\x37\x2f\x84\xe4\xd5\x74\x87\x91\xd7\x07\xee\x5c\x12\x7e\xda\x8b\x84\x59\x6b\x0c\x10\x89\x0c\x88\x10\x06\xbe\xb3\x8a\xd5\x6d\x13\x9d\x8c\x74\xf1\x4f\x35\x98\xde\x55\x1e\xe3\xa1\x34\x66\xe6\x7c\xb3\xd2\xc5\xfd\x90\x90\x61\x52\x20\x58\xff\xbe\x9a\xe4\x31\x32\x55\x44\xc8\x94\xb9\x84\x1a\x4c\x25\x36\x32\xa3\x32\xc6\xe0\xd8\x81\x64\x5f\x90\xb6\x33\x7d\xb9\x9b\x7f\xad\x1b\xd1\x62\xf7\x3d\x11\xce\x5e\x57\xd5\xf3\x21\xfb\x68\xa7\x95\xc9\x90\x66\x2a\x35\x70\x6a\xf8\x45\xb5\x38\x3f\xe5\x0b\xa8\x63\x76\x13\xdd\x43\xaa\x7c\xf2\x00\x20\x35\x52\x18\xe0\x60\xaf\x26\x58\x86\x63\x49\x19\x7f\x30\xc8\x35\x35\x1b\xd6\x96\x83\xba\xaa\xb8\xbe\x6b\x4d\xa0\x4f\xb3\x5a\x42\x33\x14\xfa\xb6\x10\xb8\xd1\xcf\x04\x40\xfe\xdb\x28\xa5\xe1\x95\x84\xef\x78\x67\xbd\x96\x2b\xa4\xed\xe5\x13\xaf\x03\xdd\xa6\x69\xf7\x6c\x67\xd2\x8f\xb5\x07\xd5\x76\x2c\x61\xd5\x28\xf1\xcf\x3a\x7c\x56\x3e\xee\x1c\x04\x10\x62\x54\xce\x3f\xd8\x21\xc1\x7a\x0d\xef\xc3\x7d\x79\xa5\xde\x7e\xf9\x35\x2c\x7b\x41\x1c\x95\x39\x58\xd2\x54\xd0\xd3\xe5\xae\x61\x8a\x68\xa5\x3e\x45\x80\x9d\x49\x3c\x47\x4a\x20\x8c\xcc\x0f\x17\x0d\xf4\x83\x6d\x05\x93\xb7\xb7\xce\x87\x4f\xa0\x1f\xe0\x41\x5a\x59\x4f\x94\x1c\x31\xf0\x78\x4a\xad\x39\x4f\x06\xb8\x53\x70\x29\x55\x5c\xcc\x73\xea\xab\x0b\x36\x84\x6f\xe5\xcc\x6e\x92\xdb\x0c\x90\xa6\x2d\x1d\x36\xc3\x82\xc3\x51\x92\x17\x89\xdf\xbe\x0f\x60\xb1\x3d\xb0\x81\x4a\xaf\x4f\xa6\xf8\x13\xa7\xcf\x2a\xd1\x2e\xbe\x10\x50\xee\xf9\x27\x68\xc3\x13\x71\x8d\x8d\xb2\x02\xe3\xd1\x09\x3d\xcf\x59\x33\x45\x1e\xfd\x9b\x72\xee\x4e\xf7\x5d\xfc\x0e\xa0\xaf\xff\xb8\x1b\xbe\xe5\x50\x38\x2b\x6b\x12\x12\xce\xa0\x97\xb7\x09\xae\xc7\xc0\xa8\x57\x99\x12\x7d\x01\x37\x6f\x7b\xd6\xf2\x55\x73\x29\x72\xf8\x89\xb6\x84\x3f\x61\x54\x78\xee\x23\x12\x47\x37\xf8\x13\xb1\x8f\x31\x33\xaf\x12\xb4\xe4\x1e\x70\xbe\xa0\x58\xb0\x0a\x5f\x96\x5e\xd2\x37\x7b\x48\x91\x6b\xc2\xa7\x16\x2a\xdb\xf7\xbc\x9c\xa1\x1a\xea\xaf\x88\xc2\xf5\x22\x9a\xf6\xdd\x38\x61\x57\x4a\x0d\x5d\x5a\xe4\x82\xf2\xd7\xe8\x6d\x17\x20\x05\xcc\xa5\x65\xb1\x2b\x19\x9a\x7d\x81\x08\x7d\x85\x77\x6d\x61\x39\x40\xb4\x87\x35\x26\x6d\x45\xa4\xad\x11\xe1\x68\xe8\x9b\x89\x3e\x65\x0b\x98\x4b\x48\x3a\xbb\x31\x8f\x43\x2f\x13\xc6\x1f\x26\xf3\xde\xab\xc6\xb4\x5d\xcf\x5f\xf4\x57\x9d\xa8\x9a\x9d\x23\x25\x1d\x1a\x6b\xec\x12\x2c\xb2\x10\xfc\x3a\xfa\x89\x10\x23\x95\xe1\xd2\x6b\x14\xca\x41\x80\xc1\xb6\xfe\x0b\x30\x00\x04\x95\x50\x28\x3b\x61\x8a\xb1\xfd\x6b\x16\x58\x55\xb2\x97\xd9\x45\x7a\xc5\x49\x46\xfb\x99\xe6\xf0\xd8\x87\x2d\xb8\x79\x34\x34\x7b\x6d\x9a\x38\xa7\x31\xbf\x8b\xd0\x8f\x2a\x7a\x7d\x80\xd4\xcf\x24\xfa\x9a\x16\xc2\x09\xa1\x84\x94\x13\x3d\x6d\xd0\xd2\x92\xef\xeb\xa7\x87\x2c\x4d\x7b\xdf\xaf\xd4\x16\xe6\x34\xcf\x90\xab\x4d\xc9\xbc\xcc\x64\x32\x27\xa0\x55\x52\xee\xe0\xf9\x16\xec\x20\x2d\xcb\x01\x1c\x83\x94\xb1\x09\x96\x87\x3a\x0a\x4b\x7a\xee\x15\x14\xf5\x95\xd2\x32\x89\xa3\xbf\x62\x08\x5b\x0a\xee\xa0\x00\x92\x06\xe7\xa7\x06\x1a\xd8\x66\x35\x22\x41\x70\x8a\xcb\xcf\x3c\x2f\xc0\xfd\xca\xaa\xa8\xb3\xbe\x8e\x51\x0b\x99\xe0\x4b\x96\xdd\xaf\xa9\xf8\x48\x3b\x7a\x56\x8c\x5e\xba\xdd\xad\x56\x77\xd9\x14\x4a\x27\x0d\x04\x44\xae\xa3\xc0\x77\x5d\x24\x1d\x79\xba\xea\x30\xdc\x4b\xb1\x9a\x71\x24\x71\xf1\x12\x83\x8c\x75\x25\x49\x6d\x4a\x8f\xa6\x66\x58\x61\x03\x47\xd4\x90\xaf\x85\x30\x5c\xea\xbf\x0f\x35\xac\x27\x7f\x2e\xf1\xb6\xa8\xe5\x81\x3c\xe0\xbe\xa5\x87\xe6\x27\xd7\x25\xf1\xdb\x12\x41\x22\x2a\xcd\x41\xe1\x6c\x8a\x32\xbd\xb4\x07\x78\xd4\xa1\x0f\x87\xb1\xe9\x0e\x00\x6d\xfc\x03\xd2\x93\x45\x89\xd2\x59\x65\x24\x0e\xe9\xc2\x14\x19\xa2\xaa\x5b\xd8\xf3\xfc\xd3\x20\x8f\x9b\x52\x15\x55\x13\xa6\xda\x73\x46\x8d\xc0\x70\x31\x02\xbc\xca\x0e\xba\x18\xe8\x8c\x19\xda\x64\xab\x5c\x6b\xf6\xcb\x81\x09\x73\x01\x53\x69\x33\x32\xf7\xe1\x60\x86\x27\x19\xdc\x08\x17\x5e\xd0\x74\xf5\xbf\x28\x87\x70\x55\x01\x33\x1c\xf7\x52\x54\xfc\xe0\xe1\x45\xac\x22\x41\x87\x52\x93\x03\x6f\x2a\xa9\x65\x92\x19\x40\x73\xd0\x47\x54\xc2\x6f\x19\xe7\x76\x33\x32\xb4\x3d\x02\x87\xa2\x83\x47\xd5\x15\x5b\xac\xfd\x32\x62\x8f\x50\x0d\x9e\x9c\x04\xf5\x36\x9f\x63\x17\xe6\x06\xe4\x22\xf9\x8c\x48\xb1\x1f\x75\x5b\x2b\x0f\xdc\x79\x49\x4a\x76\x97\x00\xd3\x5a\x88\xa3\x30\xf0\x2c\xab\x2f\xb7\xb6\x50\x49\xe2\xd1\xe3\x50\xa6\xe0\x2d\x5d\x54\xac\x7c\x85\xf2\x68\xc0\xea\xf7\x70\x71\xd5\xac\xab\xed\x99\x42\x90\x30\xd0\x0b\x30\xc4\xca\xa2\x1c\xe3\x22\xd4\xf7\x80\xe8\x92\x20\x11\x29\xff\x77\x2d\x22\xcc\x4d\x4c\x27\x4b\x47\x99\x48\xd2\x2a\xcf\xc1\x76\x0b\x29\x17\xff\x30\x8e\x9a\x3a\xa2\x27\x79\xbd\x0f\x45\x3d\x11\xe0\xde\xe7\x88\xdc\xf9\x5b\x7b\xe9\x0c\x3b\x3b\x3a\x7f\xe5\x35\xda\x50\x3c\x38\x1e\x34\x6e\xb2\xa0\xb0\xe3\x75\xad\x72\x6e\xe2\xa3\x89\x19\x81\x0d\x5c\x54\x5e\xdc\xea\x1b\x23\x10\x9a\x3f\xb6\x8e\x30\xc0\x1c\xc7\x04\xa9\xd2\x3a\xe5\x5d\x18\xcc\x9f\xdf\xf0\x2b\xd4\x84\xd5\x9f\x46\x8d\x75\xa7\x96\x65\x7f\xdc\xa5\x9f\x55\xd4\xbe\x7e\xfd\x73\x78\xa3\x16\x85\x33\x4a\xdc\x0c\xac\xae\xf9\xaf\x56\x49\xda\x85\xdc\x6c\x59\x89\xcf\x8e\x2b\x99\x77\xa6\x2a\x8c\xa8\xbc\x27\x78\x2b\x1b\x30\x28\xa4\xde\x9a\x0e\x87\xdb\xab\x78\x79\x14\x4e\x40\xa8\x11\xf0\xb1\xb2\x88\x0d\x26\x82\x3c\x99\x0a\xde\xb7\xdf\x41\x11\x6f\xcf\x60\x22\xa0\x8d\x87\xac\x7c\x63\xec\xdf\xf7\x96\xda\xfa\x08\x2e\x5c\xd8\x5d\x6c\x3f\x17\xf8\x74\x0e\xa1\xe9\xa0\xc8\x86\xe0\xcd\x70\x74\xc4\x5d\xbc\x2d\xc7\xb3\x4c\x68\x59\xe0\x6a\x0c\xee\x9b\x20\xce\x43\x72\x4a\x41\x4e\xb7\x7b\x0b\x80\x4d\xff\xcc\x7b\xc4\x4d\xab\x7f\xa0\x2a\x38\x36\xea\xe3\x96\xf9\xed\xe4\x8d\x6d\xee\xa3\x33\xb0\xa9\x90\xeb\xbc\xd1\xb3\x36\xbb\x73\xd8\xe7\x2c\x72\xe1\x24\x49\xf1\xca\x72\x0a\x3b\xcd\x97\x88\xd1\xdc\xdd\xe5\x12\x14\xb7\x71\xa1\xca\x13\x89\xeb\xb5\xa0\x56\x45\xac\xf9\x73\x15\x65\x1a\xe8\x86\xec\xd5\xf0\x09\xa7\xcc\x62\xbf\xc4\x94\x59\xb7\x1f\xea\x3f\x8a\xdc\x05\xd3\x71\x29\x78\x1a\xc9\x07\x3e\xb8\x3f\x1e\xeb\x1f\xc8\x4a\x90\xc8\x31\x6c\x36\x16\x42\x59\xa7\xc2\x4e\x5a\x20\x0c\x35\x3e\xbd\x7b\xf2\x32\x4e\xff\x52\x16\x80\xb2\x18\xa8\x65\x4b\x6d\xf7\xb0\x46\xaf\xdc\x85\xa7\x8c\xfe\xe1\x74\xa6\xe9\x19\x78\xd4\xaf\x65\x11\xd3\x07\x99\x19\x5d\xf4\x28\x86\xc8\x32\x7d\xcc\x62\x4c\x29\x12\xf8\x3f\xe1\xbb\x63\x02\xec\x71\xa8\xf0\x98\xd5\xe0\x56\xd8\x95\x95\xc4\x60\x06\x2d\x29\xa5\x54\x6e\x5b\xa7\x7e\x0a\x17\x9a\x84\x8f\x03\x3e\x11\xaf\xc1\xa1\x98\x97\xe8\x3c\x2a\xb7\xeb\x58\x20\x72\x22\x15\x67\x67\xeb\xdb\x2e\x24\x26\xae\x2c\x59\x4c\x20\x5d\xa5\x96\x50\x28\x3b\x33\xcb\xf5\x0a\x77\xd6\x07\xde\x9e\x2f\xfe\x0f\x08\x0f\xd7\x73\xc7\xe0\x3f\x20\x50\x5d\xd0\xcb\x15\xcd\x89\x24\xcd\xd6\xb8\x7d\x7f\x61\x5b\xcc\xd2\xeb\x47\x83\x95\x61\xd7\x9a\x02\xca\x9c\xde\x0f\xde\x19\xb5\xa0\xc2\xa9\x0b\xd4\xa0\xc7\x36\x1b\xfd\xad\x53\x74\xac\x42\xb5\x16\x11\x15\x75\x9c\xfa\x2a\xc0\x8c\x16\x79\x5a\xb5\x2c\x84\xc5\x40\x71\x0b\x1d\x1d\x50\x06\xf2\xab\xa0\x98\xc6\xb6\x82\xa5\x1f\x03\xff\x5d\x79\xb6\xbc\xe0\x20\xce\x72\x6f\x7f\xa2\xe7\x68\x51\x38\x08\x7d\x60\x9c\x05\x05\x4a\x9f\x4c\x45\x68\x15\x2e\x89\x00\xd8\x66\xbd\x4a\x98\x0b\x07\xd3\x5b\x83\x36\x47\xd1\xf4\xe2\x65\x75\xd4\xde\x1c\x7a\x7c\xcf\x5c\xd1\x19\xd6\xdb\x4c\x72\xfb\x9c\x24\xe3\xa0\x85\xec\xdd\xe5\x21\xff\x18\xbe\xc6\xc1\x6c\x93\x14\x57\xcd\x8e\x26\x46\x1d\x48\xb5\x5c\x21\x1a\x27\xba\x49\x86\x63\xb3\x4e\xa0\xdc\xfd\x8c\xdf\xa1\x29\x00\xfe\x83\x67\xab\xbe\xac\x8e\x4e\xb1\xa1\x80\x36\xc9\xc1\x69\x49\x35\xa5\x73\xb6\x1a\xfc\x05\xc1\x26\x5a\xaf\xb6\xef\x58\x4e\x82\x3b\x84\x27\x64\xb7\x1d\xca\x33\x18\x37\x64\x9a\x51\xd0\xc9\x6c\xef\xec\x43\x58\x35\xb8\xf4\xb5\xda\xc5\xd1\xf2\x4b\xe9\x4d\x53\x78\xa1\x66\x4e\xfc\x1d\xaf\x55\x70\x15\x65\x7a\xdb\x77\x88\x1c\x5d\x18\x1c\xd9\xd1\xf1\xd3\xd9\x6b\xf7\x4d\x51\x67\x93\x02\x85\xb6\xf9\x8f\xef\x31\xbb\xef\x73\x78\xcf\x2f\x12\xc4\xc4\x79\xf9\x60\x76\xd8\x17\x0d\x76\x8d\xfd\x2f\xe8\x23\xcd\x14\xd6\xd7\x05\x9d\x75\xd9\x54\x7a\xb2\x2a\xda\x6f\xd1\xa3\x64\xae\x76\x29\xe6\xf7\xe4\x66\xa4\xc8\xa4\x94\x83\xe4\x55\x5f\x6c\x08\x81\xfd\x2c\xee\x97\x92\x32\x47\xf2\xca\x83\x9f\x88\xb1\xed\xa7\xc3\xb7\xc7\x5f\x53\x0c\x0f\xd6\x0b\x85\xe8\xb1\x0d\x4b\x58\xd7\xb8\x81\x5b\xbf\x1e\x4f\x42\xa1\x6b\x25\x22\x58\x88\xbd\xa2\x47\xd4\x6b\xe3\x55\x13\x25\xb6\x06\xf6\x1c\xe7\x76\xa9\x2f\x04\x68\x84\xfd\x27\x5e\x82\xd4\xc0\x87\x61\xb6\x0d\x69\x8c\x5a\xdd\xe7\x8d\xed\x62\xd8\x83\x5a\x1b\x23\xb3\xff\x96\x57\x6b\x2c\x19\x8f\x72\x2e\x76\xea\x22\x66\x73\x88\xa4\x4e\xd3\x16\xea\x6d\xc5\xbe\x4b\xd8\x40\x43\x57\x2a\x2a\xfa\x19\xcd\x9a\x84\xef\x5f\xfc\x28\xfb\x0f\x68\x9c\x4c\x25\x26\xce\xc2\x61\x50\x2f\x1e\x0a\xf6\x65\xcb\xde\xf5\x0e\x3a\x66\x9c\x0a\xa1\x36\x43\x07\xc8\x9d\x76\x6d\x58\x69\xe2\xc9\xe4\x14\xca\x21\x67\x35\xc0\x18\x26\xee\xe4\xea\x8b\xcb\x09\xb6\x7a\x8d\xd8\xf7\xed\xb6\x85\x36\xc6\xee\xfa\x0f\xa0\xd7\x8f\x4a\x86\xbd\x70\x48\x2d\x98\x52\xe4\x82\x91\xd1\xe1\x6a\xd1\x14\x34\x77\x9a\x27\x86\x1a\xf8\x19\x2a\x64\x27\x50\x84\xe7\xd9\xe0\x60\x4c\x52\x07\x3c\x33\x24\xb9\x57\x7b\x08\x80\x73\xab\x27\x00\x41\xd0\x41\xcf\x5f\xf1\x88\x31\xb8\x0e\x00\xa2\x73\xb6\x86\x00\x59\xbe\xc4\xa6\xc4\x19\x02\x64\x4e\xf9\x23\xe8\x90\xd5\x58\xb5\xa9\x6e\xf9\xee\xfe\x19\xde\x12\x07\x35\xe9\x89\x87\xa9\x8d\x53\xa5\x6e\x32\x26\xc5\x76\xcd\x2e\xf4\x86\xae\x13\x8f\xf3\xb6\x2e\xae\x33\xca\x91\xf8\xb7\x7d\x3a\x98\xf5\x83\xe8\x63\xd4\xeb\xe5\x3d\x0b\x3f\xa9\x7c\x47\x68\x28\x05\x93\xf9\x35\xf6\x14\x25\x95\xed\x15\x05\x7a\xdf\x8b\x60\x14\x86\x20\x49\x3a\xfe\xb5\xff\x5d\xe1\x7b\x6a\xc2\x6d\x5b\xbb\x7c\xf7\xf4\x71\x32\x64\x2e\xbe\x73\xde\x00\x51\xf0\x73\x61\x0b\x0c\x1e\xae\xf6\x74\x99\x19\xcf\x0e\x87\x14\x4c\x0d\x8f\x70\xee\xab\xb7\xfe\x6c\x2e\x58\xf9\x14\xe5\x44\xe8\xbe\x21\xc2\xf3\xa6\x02\xd6\x1c\xfc\xf0\x17\x65\xe4\x9c\xbc\xd0\xa6\xf9\xb1\x61\x6e\xc5\x6a\x4d\xe6\xe5\x2b\xc9\x79\x84\x0a\x84\x2d\x9b\x2d\xd4\xb5\xd5\x9d\x15\xb3\xce\x85\x13\x8b\xc9\x8c\x1e\x25\x4c\x84\x85\x3b\x67\x26\xb6\xfd\xb7\xbc\x79\xe9\x0d\x34\xbe\x3d\xd8\x6c\x4d\xef\xbf\xac\x94\x38\x80\x29\x2f\xec\x0d\x99\x5c\xdb\x52\x44\x51\x4d\x11\x51\x8e\xfe\x79\x20\x4d\x53\xc9\xcd\xa4\xa4\x87\xbf\x30\xe9\xff\x7f\x28\x6e\x53\x6a\xc1\xfe\x9f\xa1\xa7\x1f\x3e\xed\x0e\x47\xf8\x47\x1e\x88\xdb\x19\xfc\xd3\xe3\x19\x76\x98\x96\x97\x98\xf2\x6d\x5c\x9c\x4b\x8a\x7b\x93\x5a\x0f\xaf\x39\x5d\x2b\xa9\xee\x8c\x57\xe1\x37\x47\xad\x4d\x01\xa2\xee\xca\x7e\x85\x3f\x9c\x52\x73\xfc\x16\x18\x54\xc2\xe9\x66\xf8\x53\xa4\x88\x88\x44\x44\x22\x91\xed\x0b\x3c\x59\x31\x5f\x8c\xba\xe2\xc9\xa4\xaf\x08\x4d\x10\xcb\x4c\x7e\x64\x00\x01\xb7\xf3\x40\x13\x2d\x80\x47\x4c\x6d\xaa\x0e\x00\x9c\x38\x0d\xf0\xfe\xb5\x7d\x5e\xb1\xed\x8b\x40\xcd\xf2\x44\x6c\x8a\x42\x4d\x48\xeb\xe5\x89\x7d\x92\x2e\x42\xf2\x5b\x98\x83\x63\x95\xdb\x51\x3e\x49\x04\xfc\x25\x21\xac\xca\x53\x03\xac\x57\x64\x54\xe6\x02\xd4\xb3\x55\x20\x73\x68\x18\xa8\x46\x83\x79\x00\x0f\x8f\x30\xf9\xe3\x7d\x05\xc7\xbc\x1f\x16\xec\xc9\xac\xb0\xf8\xc6\x30\x96\x67\x75\x57\x5a\x40\x64\xa7\x70\xf7\xb5\x3f\x7c\xa7\xcc\xc0\x0b\xdb\x71\x19\x5d\x53\xcf\x21\xb7\x48\x20\x66\x52\x20\xc0\x57\x85\xb2\x25\xb2\xcb\xe2\x85\x5a\x5a\xe4\x0b\x9b\xce\x9e\x1e\xdd\xb7\x8a\x9e\x4c\x08\x25\xfb\x47\xff\xf9\xe6\xf3\x7a\x95\x54\xd9\xee\x04\x6c\xd1\x8a\x30\x1d\xae\xe2\x6e\xc5\xee\xf4\xf1\x01\x25\x6e\x0c\x59\xdf\x35\xcb\xb5\x19\x2f\x80\x16\x2b\xa3\x93\x7d\xbf\x36\x19\x98\x7b\xf1\x8b\x1d\x69\xd6\xe6\xe0\xc4\x2f\xea\xd7\xf0\xed\x6d\x2c\xf5\x4d\xa7\x8f\x87\x49\x60\xe4\x45\xa1\x08\xb7\xbb\x09\x87\xcb\x94\x27\xe1\x02\x3a\x1c\x85\xc2\x72\xc1\x0b\xca\x78\x1f\x98\xc7\x6e\x10\x67\x39\x24\xe6\x58\xe7\x36\xcc\x54\x4a\xfc\x0c\xde\xcd\xe8\xe5\x8d\x14\xa1\x8e\x4b\x74\x21\x50\x75\x1a\x46\xa1\x4d\x90\xd7\x10\xa9\xea\x82\x26\x6e\x46\x65\x4b\xbc\x15\x36\x85\xc1\x95\x99\x8b\x09\x23\xcc\xe3\x13\x50\xb7\x9b\x20\x39\xf2\x38\x55\xdc\x3b\xa1\x14\x38\xb1\x5c\xc0\x3a\xaa\xd9\xd3\x1b\x58\x19\xc4\xb4\x12\x34\xe9\x3a\x30\x61\x55\x47\x9a\x6b\xd4\x5d\xf8\x4e\x1c\xf9\xe8\xd8\xea\x0e\x89\x6d\x92\x88\xd2\xe4\x8d\x87\x30\xd8\x6b\xf8\x99\x7c\x62\xa8\x37\x8a\xd9\x59\x25\x67\x2d\xef\xba\xa1\xc9\xcb\xa3\x15\xce\x1e\x64\xf8\x61\x6b\x17\x4b\x88\xc5\x7a\xb7\x80\x74\x8a\xe9\x6c\xdb\xe3\x6d\xc4\xd7\x90\x54\xfd\xd7\xbe\xc3\xb4\x0b\x1f\xc7\xb1\x26\x6e\x19\x7c\xa7\xfe\x41\xd0\x74\x3a\xd9\xa8\xa1\x04\x30\xa4\xe1\xcc\xed\xf8\xaa\x48\x62\x3f\xff\xa2\xbf\xd3\x30\x36\x4b\x0e\x3a\xa1\xdb\x7d\x9b\x9a\xa4\xca\x8e\x17\xd9\x3c\x91\x6d\x6a\xfe\x57\xd3\x3f\x7b\x05\x9b\x67\x0b\xba\x34\xbc\xee\xd5\x11\x65\xff\xc0\xdc\xa6\xaf\x53\x2e\xb3\xef\x97\x6b\x29\x6e\x97\x5c\xe2\x5b\x40\xec\x63\x9c\xa4\x35\x93\xb2\x59\x46\xba\x82\xa8\x19\xe8\xf1\xaf\xa7\xdf\xa3\x45\xf3\x5c\xc0\x8b\xf3\xe7\x73\x02\x88\x6c\xaf\x08\xe1\x43\x24\x45\xf6\x7d\xc5\x9c\x69\x85\xe7\xf8\xc9\xbb\xc8\xa6\x8a\x39\x25\xe2\x0c\x14\xbd\xd2\xb6\x92\x2b\xc9\x24\x32\x1f\x58\x23\xdf\x51\x18\x34\xf2\xa2\x9e\x4d\x7e\x32\x0f\x96\x3c\x7a\xd3\xa1\x52\x22\xaf\xa2\x2a\x98\x37\x51\x47\xfb\x3f\x43\x33\xf5\xb8\xc1\x39\xa1\x04\x5d\x3c\xc6\xde\x57\xb2\x4a\x23\x41\xcc\x16\xb3\xdf\xe0\x69\xa3\x58\x65\xb8\x52\xc2\xf8\x4f\xd4\xec\x28\xec\x17\x8f\xd0\xb9\xff\x32\xe1\xe5\x29\xbf\x3d\xc9\x69\xae\x17\xdb\x13\x96\xc2\xcb\xa7\x4b\x6a\xd4\xb8\x32\x07\xea\xb4\xb1\x2c\x93\x60\x4d\xa7\xeb\xbd\x03\x9b\xae\x1e\xa1\xcb\xf5\xc9\x79\x87\x0e\x8e\x87\xae\xc0\xc8\x83\xe8\xb9\x52\xbe\xc1\x98\x67\x60\x40\x3b\x19\x3e\x16\x5f\xff\x20\xff\x51\x60\xa4\x34\xbd\x25\xa7\xcb\xec\xc4\xf8\xb9\xb7\xa5\x5b\x41\x29\x6f\x96\x09\x34\x2b\x8a\x76\xaf\xb6\xab\x98\x91\xbd\x17\x42\x70\x8a\x99\xf3\x4a\x56\xef\xc1\x39\x20\x0f\x1b\x5f\xe1\x57\xbb\x27\x62\x40\xe7\xe2\xa0\xa0\xf4\xea\x59\x1a\xc0\xb2\x4a\x21\xcc\xd1\xcc\x4e\xf6\xc8\xba\xa0\x82\xde\xa2\x3f\xe5\x49\x90\x1e\xcb\xe7\x8c\x47\x4b\x27\x54\x33\x49\x05\x9f\x91\x15\xa5\x91\x39\xe4\x5e\xe6\xf9\xff\x40\x52\x38\x54\x22\xc9\x38\x61\x59\x4f\xe9\x89\xfa\x84\xd2\x82\x1d\x63\xea\x55\xd9\x32\x7d\x70\x19\xe9\x12\xf7\xeb\xae\xbf\x24\xbf\x21\x16\xcc\xc1\xa6\xa2\x83\xc3\x97\xba\x3c\xaa\x5e\xa8\xd4\x4a\xc7\x36\x78\x3f\xb4\xef\x27\x15\x95\x70\xae\xf5\x11\x56\xe9\x0e\x69\x4f\xaa\x6d\x1a\x9e\x19\x21\xd8\xd1\xb1\x87\xc3\xea\x36\x7f\x33\x08\xcf\xe1\xb7\x41\x2a\x55\x8b\xf3\xce\x7f\xfe\xf3\x0f\x89\x27\xe4\x96\x12\x6e\x3e\xfe\x17\x1f\x4b\xee\xf7\x1b\xae\x80\xd3\x63\xf5\xb7\x3a\xa8\xf7\xa9\x12\x82\x42\x6c\xa3\xc7\xf0\x88\xe4\x25\x56\xc5\x65\x45\xbd\x0d\xe1\x96\x96\xd7\xb6\x07\x37\x65\x80\x08\xfd\x63\xc2\x3f\xef\xdc\xf5\x5a\x33\x58\x46\xb1\xa1\xda\xba\x80\x40\x4b\x4f\xc4\x87\xd1\x9f\x32\xe3\xad\x86\x81\x39\x0f\x2c\x57\xa2\x09\x74\x24\x4f\xd1\x12\xdd\x0c\x88\x30\xe4\x11\x60\xd5\xd7\x40\x59\x95\x13\xae\x0c\x03\xa9\x08\xa0\x08\xeb\x41\x19\x68\xd5\x3f\x5b\x9c\x1d\x8d\xd4\xf3\xf0\x36\x55\x92\xe6\x26\xf4\xf2\x01\x68\x52\x1a\x58\x73\x97\x67\xb1\x8c\xf2\x40\x0c\xa6\xf6\x97\xcc\xea\x44\x63\xaa\x90\x38\x90\x92\xf3\x5e\xca\x8a\x4b\x1b\x7c\x5d\xa0\x42\x83\xa6\x7b\x0f\xb1\x3f\x36\x04\x73\x76\xbf\x35\x91\xae\xbd\x37\xab\xf5\x08\xb3\x66\xf5\xb6\xf5\x44\x2f\x41\xc0\x57\x2f\xc8\xea\x15\xb5\xd9\x2c\xc3\x47\x9d\x01\x8e\x57\xd7\x2d\xbc\x1b\x03\x71\x0d\xae\x0a\x3e\x27\xf9\x2a\x6d\x96\xf0\x19\x2b\x7d\x63\xaf\x28\x27\xe6\x93\x92\x6c\x08\xf1\x30\x39\xe8\xf8\xc9\xec\x97\xd5\xff\xb3\x4e\x5e\xc2\x5f\x17\x55\x96\x4d\xf0\x48\xd2\x2f\x48\xee\xd1\x75\x6b\xf1\x66\x0c\x61\x9f\xb1\xa0\x36\x90\x1f\xd9\xad\x59\x04\xee\x35\x4e\x90\x17\x4b\x12\xee\x8d\x44\x99\xe1\x8f\x69\x9f\x6f\x8b\xdc\xfa\x19\x59\xb5\xad\xdb\xa3\xf4\x0e\xeb\xc7\x27\x59\x4c\x7d\x26\x7f\x5f\x12\x3e\xd2\x5d\xb5\x0e\xb9\x82\x88\xc2\xd5\x14\x16\xa1\x20\x59\x7f\x4e\xc0\xeb\xaa\x08\xa9\xf1\xaf\xa7\xa9\x2d\x63\xde\x95\x41\xd1\xd1\x13\xc8\xd6\x45\xbf\x02\x79\xdb\x6e\x7e\x1d\x0a\xe7\x1b\x78\x5e\x47\xe1\x40\x63\xec\xfb\x14\x86\x04\xd4\xb9\xe2\xba\x9a\xc9\x07\x44\xb6\xbf\xaa\xb6\x37\xe3\xe1\x5d\x4e\xea\x24\xcb\x4e\x9c\x76\xd8\xef\xa7\x50\xa7\xbe\x5c\x52\x41\xa4\x6c\x59\x6f\xd3\x96\x88\xb0\xdd\x52\xe5\x40\x64\x1c\x3f\x98\xd7\x09\x5c\x63\x47\xdd\xeb\xd3\x1c\xce\x61\x93\x80\x46\x07\xd3\x4f\xf8\x2f\x3e\x0d\xcc\xc9\x81\xa6\x8e\x0d\x69\x0a\x8b\x80\x6f\xf7\x57\xbb\x11", 4096); syscall(SYS_ioctl, (intptr_t)r[2], 0xc0f24413, 0x100005c0); break; case 10: *(uint8_t*)0x10000000 = 0; *(uint8_t*)0x10000001 = 0; *(uint8_t*)0x10000002 = 0; *(uint8_t*)0x10000003 = 0; *(uint8_t*)0x10000004 = 0; *(uint8_t*)0x10000005 = 0; *(uint8_t*)0x10000006 = -1; *(uint8_t*)0x10000007 = -1; *(uint8_t*)0x10000008 = -1; *(uint8_t*)0x10000009 = -1; *(uint8_t*)0x1000000a = -1; *(uint8_t*)0x1000000b = -1; *(uint16_t*)0x1000000c = htobe16(0x8100); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 1, 0, 3); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 1, 3, 1); STORE_BY_BITMASK(uint16_t, , 0x1000000e, 4, 4, 12); *(uint16_t*)0x10000010 = htobe16(0x806); *(uint16_t*)0x10000012 = htobe16(1); *(uint16_t*)0x10000014 = htobe16(0x800); *(uint8_t*)0x10000016 = 6; *(uint8_t*)0x10000017 = 4; *(uint16_t*)0x10000018 = htobe16(9); *(uint8_t*)0x1000001a = 0xaa; *(uint8_t*)0x1000001b = 0xaa; *(uint8_t*)0x1000001c = 0xaa; *(uint8_t*)0x1000001d = 0xaa; *(uint8_t*)0x1000001e = 0xaa; *(uint8_t*)0x1000001f = 0xbb; *(uint32_t*)0x10000020 = htobe32(0xe0000001); *(uint8_t*)0x10000024 = 0xaa; *(uint8_t*)0x10000025 = 0xaa; *(uint8_t*)0x10000026 = 0xaa; *(uint8_t*)0x10000027 = 0xaa; *(uint8_t*)0x10000028 = 0xaa; *(uint8_t*)0x10000029 = 0xbb; *(uint32_t*)0x1000002a = htobe32(-1); break; case 11: memcpy((void*)0x10000040, "\x0f\x5a\x60\xb0\x06\xc4\xe1\x01\x6b\xd7\x65\x2f\xc4\xe1\xf8\x11\x81\x00\x00\x00\x80\xc4\xc1\x19\x60\x18\x3e\x67\x3e\x0f\x01\xd9\xf2\xe1\xab\xf3\xee\x66\x0f\x14\x8b\xf1\xff\xff\xff", 45); syz_execute_func(0x10000040); break; case 12: break; } } int main(void) { syscall(SYS_mmap, 0x10000000, 0x1000000, 7, 0x1012, -1, 0); use_temporary_dir(); do_sandbox_none(); return 0; } :269:11: error: use of undeclared identifier 'SYS_freebsd12_closefrom' syscall(SYS_freebsd12_closefrom, (intptr_t)r[1]); ^ 1 error generated. compiler invocation: clang [-o /tmp/syz-executor521691219 -DGOOS_freebsd=1 -DGOARCH_386=1 -DHOSTGOOS_freebsd=1 -x c - -m32 -O2 -pthread -Wall -Werror -Wparentheses -Wunused-const-variable -Wframe-larger-than=16384 -static -lc++ -Wno-overflow] --- FAIL: TestGenerate/freebsd/386/15 (1.20s) csource_test.go:106: --- FAIL: TestGenerate/freebsd/386/1 (1.16s) csource_test.go:106: --- FAIL: TestGenerate/freebsd/386/10 (1.20s) csource_test.go:106: --- FAIL: TestGenerate/freebsd/386/13 (1.22s) csource_test.go:106: --- FAIL: TestGenerate/freebsd/386/9 (1.24s) csource_test.go:106: --- FAIL: TestGenerate/freebsd/386/11 (1.28s) csource_test.go:106: FAIL FAIL github.com/google/syzkaller/pkg/csource 10.255s ok github.com/google/syzkaller/pkg/db (cached) ? github.com/google/syzkaller/pkg/debugtracer [no test files] ok github.com/google/syzkaller/pkg/email (cached) ? github.com/google/syzkaller/pkg/gce [no test files] ? github.com/google/syzkaller/pkg/gcs [no test files] ? github.com/google/syzkaller/pkg/hash [no test files] ok github.com/google/syzkaller/pkg/host 1.450s ? github.com/google/syzkaller/pkg/html [no test files] ok github.com/google/syzkaller/pkg/ifuzz (cached) ? github.com/google/syzkaller/pkg/ifuzz/iset [no test files] ? github.com/google/syzkaller/pkg/ifuzz/powerpc [no test files] ? github.com/google/syzkaller/pkg/ifuzz/powerpc/generated [no test files] ? github.com/google/syzkaller/pkg/ifuzz/x86 [no test files] ? github.com/google/syzkaller/pkg/ifuzz/x86/gen [no test files] ? github.com/google/syzkaller/pkg/ifuzz/x86/generated [no test files] ok github.com/google/syzkaller/pkg/instance 1.595s ok github.com/google/syzkaller/pkg/ipc 4.876s ? github.com/google/syzkaller/pkg/ipc/ipcconfig [no test files] ? github.com/google/syzkaller/pkg/kcidb [no test files] ok github.com/google/syzkaller/pkg/kconfig 0.037s ok github.com/google/syzkaller/pkg/kd (cached) ok github.com/google/syzkaller/pkg/log (cached) ok github.com/google/syzkaller/pkg/mgrconfig 0.069s ok github.com/google/syzkaller/pkg/osutil (cached) ok github.com/google/syzkaller/pkg/report (cached) ok github.com/google/syzkaller/pkg/repro 0.275s ? github.com/google/syzkaller/pkg/rpctype [no test files] ok github.com/google/syzkaller/pkg/runtest 50.184s ok github.com/google/syzkaller/pkg/serializer (cached) ? github.com/google/syzkaller/pkg/signal [no test files] ok github.com/google/syzkaller/pkg/symbolizer 0.304s ok github.com/google/syzkaller/pkg/tool (cached) ok github.com/google/syzkaller/pkg/vcs 13.315s ok github.com/google/syzkaller/prog (cached) ok github.com/google/syzkaller/prog/test (cached) ? github.com/google/syzkaller/sys [no test files] ? github.com/google/syzkaller/sys/akaros [no test files] ? github.com/google/syzkaller/sys/akaros/gen [no test files] ? github.com/google/syzkaller/sys/freebsd [no test files] ? github.com/google/syzkaller/sys/freebsd/gen [no test files] ? github.com/google/syzkaller/sys/fuchsia [no test files] ? github.com/google/syzkaller/sys/fuchsia/fidlgen [no test files] ? github.com/google/syzkaller/sys/fuchsia/gen [no test files] ? github.com/google/syzkaller/sys/fuchsia/layout [no test files] ok github.com/google/syzkaller/sys/linux (cached) ? github.com/google/syzkaller/sys/linux/gen [no test files] ? github.com/google/syzkaller/sys/netbsd [no test files] ? github.com/google/syzkaller/sys/netbsd/gen [no test files] ok github.com/google/syzkaller/sys/openbsd (cached) ? github.com/google/syzkaller/sys/openbsd/gen [no test files] ? github.com/google/syzkaller/sys/syz-extract [no test files] ? github.com/google/syzkaller/sys/syz-sysgen [no test files] ? github.com/google/syzkaller/sys/targets [no test files] ? github.com/google/syzkaller/sys/test [no test files] ? github.com/google/syzkaller/sys/test/gen [no test files] ? github.com/google/syzkaller/sys/trusty [no test files] ? github.com/google/syzkaller/sys/trusty/gen [no test files] ? github.com/google/syzkaller/sys/windows [no test files] ? github.com/google/syzkaller/sys/windows/gen [no test files] ok github.com/google/syzkaller/syz-ci 0.276s ok github.com/google/syzkaller/syz-fuzzer (cached) ok github.com/google/syzkaller/syz-hub (cached) ok github.com/google/syzkaller/syz-hub/state (cached) ok github.com/google/syzkaller/syz-manager 1.307s ? github.com/google/syzkaller/tools/syz-benchcmp [no test files] ? github.com/google/syzkaller/tools/syz-bisect [no test files] ? github.com/google/syzkaller/tools/syz-build [no test files] ? github.com/google/syzkaller/tools/syz-check [no test files] ? github.com/google/syzkaller/tools/syz-cover [no test files] ? github.com/google/syzkaller/tools/syz-crush [no test files] ? github.com/google/syzkaller/tools/syz-db [no test files] ? github.com/google/syzkaller/tools/syz-execprog [no test files] ? github.com/google/syzkaller/tools/syz-expand [no test files] ? github.com/google/syzkaller/tools/syz-fmt [no test files] ? github.com/google/syzkaller/tools/syz-hubtool [no test files] ? github.com/google/syzkaller/tools/syz-kcidb [no test files] ? github.com/google/syzkaller/tools/syz-kconf [no test files] ok github.com/google/syzkaller/tools/syz-linter 4.830s ? github.com/google/syzkaller/tools/syz-make [no test files] ? github.com/google/syzkaller/tools/syz-minconfig [no test files] ? github.com/google/syzkaller/tools/syz-mutate [no test files] ? github.com/google/syzkaller/tools/syz-prog2c [no test files] ? github.com/google/syzkaller/tools/syz-reporter [no test files] ? github.com/google/syzkaller/tools/syz-repro [no test files] ? github.com/google/syzkaller/tools/syz-reprolist [no test files] ? github.com/google/syzkaller/tools/syz-runtest [no test files] ? github.com/google/syzkaller/tools/syz-showprio [no test files] ? github.com/google/syzkaller/tools/syz-stress [no test files] ? github.com/google/syzkaller/tools/syz-symbolize [no test files] ? github.com/google/syzkaller/tools/syz-testbuild [no test files] ? github.com/google/syzkaller/tools/syz-trace2syz [no test files] ok github.com/google/syzkaller/tools/syz-trace2syz/parser (cached) ok github.com/google/syzkaller/tools/syz-trace2syz/proggen (cached) ? github.com/google/syzkaller/tools/syz-tty [no test files] ? github.com/google/syzkaller/tools/syz-upgrade [no test files] ? github.com/google/syzkaller/tools/syz-usbgen [no test files] ok github.com/google/syzkaller/vm 8.121s ? github.com/google/syzkaller/vm/adb [no test files] ? github.com/google/syzkaller/vm/bhyve [no test files] ? github.com/google/syzkaller/vm/gce [no test files] ? github.com/google/syzkaller/vm/gvisor [no test files] ok github.com/google/syzkaller/vm/isolated (cached) ? github.com/google/syzkaller/vm/kvm [no test files] ? github.com/google/syzkaller/vm/odroid [no test files] ? github.com/google/syzkaller/vm/qemu [no test files] ok github.com/google/syzkaller/vm/vmimpl (cached) ? github.com/google/syzkaller/vm/vmm [no test files] ? github.com/google/syzkaller/vm/vmware [no test files] FAIL