// autogenerated by syzkaller (http://github.com/google/syzkaller) #ifndef __NR_socket #define __NR_socket 41 #endif #ifndef __NR_ioctl #define __NR_ioctl 16 #endif #ifndef __NR_mmap #define __NR_mmap 9 #endif #define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include void test() { int s0 = socket(AF_INET6, SOCK_RAW, IPPROTO_TCP); struct ifreq ifr0; memset(&ifr0, 0, sizeof(ifr0)); strcpy(ifr0.ifr_name, "lo"); ifr0.ifr_flags = 0x8301; ioctl(s0, SIOCSIFFLAGS, &ifr0); int s1 = socket(AF_INET6, SOCK_RAW|SOCK_CLOEXEC, 0x2b); int s2 = socket(AF_INET6, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP); struct ifreq ifr1; memset(&ifr1, 0, sizeof(ifr1)); strcpy(ifr1.ifr_name, "ip6_vti0"); ioctl(s2, SIOCGIFINDEX, &ifr1); struct in6_ifreq ifr2; memset(&ifr2, 0, sizeof(ifr2)); memcpy(&ifr2.ifr6_addr, "\xfd\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\xbb", 16); ifr2.ifr6_prefixlen = 9; ifr2.ifr6_ifindex = ifr1.ifr_ifindex; ioctl(s1, SIOCSIFADDR, &ifr2); int s3 = socket(AF_INET6, SOCK_STREAM|SOCK_NONBLOCK, 0x84); struct ifreq ifr3; memset(&ifr3, 0, sizeof(ifr3)); strcpy(ifr3.ifr_name, "lo"); ifr3.ifr_flags = 0x8000; ioctl(s3, SIOCSIFFLAGS, &ifr3); int s4 = socket(AF_INET6, SOCK_RAW, 0x3); struct ifreq ifr4; memset(&ifr4, 0, sizeof(ifr4)); strcpy(ifr4.ifr_name, "ip6_vti0"); ifr4.ifr_flags = 0x8301; ioctl(s4, SIOCSIFFLAGS, &ifr4); ioctl(s0, SIOCSIFFLAGS, &ifr0); ioctl(s3, SIOCSIFFLAGS, &ifr3); } int main() { test(); return 0; }