blob: be7a7513c3dfd6e449b2dee6f03f33195497e2a7 [file] [log] [blame]
// WARNING in skb_warn_bad_offload
// https://syzkaller.appspot.com/bug?id=0075499a00c437c2571fd521bd57068098df35ee
// status:open
// autogenerated by syzkaller (https://github.com/google/syzkaller)
#define _GNU_SOURCE
#include <arpa/inet.h>
#include <endian.h>
#include <fcntl.h>
#include <net/if.h>
#include <netinet/in.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/syscall.h>
#include <sys/types.h>
#include <unistd.h>
#include <linux/genetlink.h>
#include <linux/if_addr.h>
#include <linux/if_link.h>
#include <linux/in6.h>
#include <linux/neighbour.h>
#include <linux/net.h>
#include <linux/netlink.h>
#include <linux/rtnetlink.h>
#include <linux/veth.h>
struct nlmsg {
char* pos;
int nesting;
struct nlattr* nested[8];
char buf[1024];
};
static struct nlmsg nlmsg;
static void netlink_init(struct nlmsg* nlmsg, int typ, int flags,
const void* data, int size)
{
memset(nlmsg, 0, sizeof(*nlmsg));
struct nlmsghdr* hdr = (struct nlmsghdr*)nlmsg->buf;
hdr->nlmsg_type = typ;
hdr->nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK | flags;
memcpy(hdr + 1, data, size);
nlmsg->pos = (char*)(hdr + 1) + NLMSG_ALIGN(size);
}
static void netlink_attr(struct nlmsg* nlmsg, int typ, const void* data,
int size)
{
struct nlattr* attr = (struct nlattr*)nlmsg->pos;
attr->nla_len = sizeof(*attr) + size;
attr->nla_type = typ;
memcpy(attr + 1, data, size);
nlmsg->pos += NLMSG_ALIGN(attr->nla_len);
}
static int netlink_send_ext(struct nlmsg* nlmsg, int sock, uint16_t reply_type,
int* reply_len)
{
if (nlmsg->pos > nlmsg->buf + sizeof(nlmsg->buf) || nlmsg->nesting)
exit(1);
struct nlmsghdr* hdr = (struct nlmsghdr*)nlmsg->buf;
hdr->nlmsg_len = nlmsg->pos - nlmsg->buf;
struct sockaddr_nl addr;
memset(&addr, 0, sizeof(addr));
addr.nl_family = AF_NETLINK;
unsigned n = sendto(sock, nlmsg->buf, hdr->nlmsg_len, 0,
(struct sockaddr*)&addr, sizeof(addr));
if (n != hdr->nlmsg_len)
exit(1);
n = recv(sock, nlmsg->buf, sizeof(nlmsg->buf), 0);
if (hdr->nlmsg_type == NLMSG_DONE) {
*reply_len = 0;
return 0;
}
if (n < sizeof(struct nlmsghdr))
exit(1);
if (reply_len && hdr->nlmsg_type == reply_type) {
*reply_len = n;
return 0;
}
if (n < sizeof(struct nlmsghdr) + sizeof(struct nlmsgerr))
exit(1);
if (hdr->nlmsg_type != NLMSG_ERROR)
exit(1);
return -((struct nlmsgerr*)(hdr + 1))->error;
}
static int netlink_send(struct nlmsg* nlmsg, int sock)
{
return netlink_send_ext(nlmsg, sock, 0, NULL);
}
static int netlink_next_msg(struct nlmsg* nlmsg, unsigned int offset,
unsigned int total_len)
{
struct nlmsghdr* hdr = (struct nlmsghdr*)(nlmsg->buf + offset);
if (offset == total_len || offset + hdr->nlmsg_len > total_len)
return -1;
return hdr->nlmsg_len;
}
static void netlink_device_change(struct nlmsg* nlmsg, int sock,
const char* name, bool up, const char* master,
const void* mac, int macsize,
const char* new_name)
{
struct ifinfomsg hdr;
memset(&hdr, 0, sizeof(hdr));
if (up)
hdr.ifi_flags = hdr.ifi_change = IFF_UP;
hdr.ifi_index = if_nametoindex(name);
netlink_init(nlmsg, RTM_NEWLINK, 0, &hdr, sizeof(hdr));
if (new_name)
netlink_attr(nlmsg, IFLA_IFNAME, new_name, strlen(new_name));
if (master) {
int ifindex = if_nametoindex(master);
netlink_attr(nlmsg, IFLA_MASTER, &ifindex, sizeof(ifindex));
}
if (macsize)
netlink_attr(nlmsg, IFLA_ADDRESS, mac, macsize);
int err = netlink_send(nlmsg, sock);
(void)err;
}
const int kInitNetNsFd = 239;
#define DEVLINK_FAMILY_NAME "devlink"
#define DEVLINK_CMD_PORT_GET 5
#define DEVLINK_CMD_RELOAD 37
#define DEVLINK_ATTR_BUS_NAME 1
#define DEVLINK_ATTR_DEV_NAME 2
#define DEVLINK_ATTR_NETDEV_NAME 7
#define DEVLINK_ATTR_NETNS_FD 138
static int netlink_devlink_id_get(struct nlmsg* nlmsg, int sock)
{
struct genlmsghdr genlhdr;
struct nlattr* attr;
int err, n;
uint16_t id = 0;
memset(&genlhdr, 0, sizeof(genlhdr));
genlhdr.cmd = CTRL_CMD_GETFAMILY;
netlink_init(nlmsg, GENL_ID_CTRL, 0, &genlhdr, sizeof(genlhdr));
netlink_attr(nlmsg, CTRL_ATTR_FAMILY_NAME, DEVLINK_FAMILY_NAME,
strlen(DEVLINK_FAMILY_NAME) + 1);
err = netlink_send_ext(nlmsg, sock, GENL_ID_CTRL, &n);
if (err) {
return -1;
}
attr = (struct nlattr*)(nlmsg->buf + NLMSG_HDRLEN +
NLMSG_ALIGN(sizeof(genlhdr)));
for (; (char*)attr < nlmsg->buf + n;
attr = (struct nlattr*)((char*)attr + NLMSG_ALIGN(attr->nla_len))) {
if (attr->nla_type == CTRL_ATTR_FAMILY_ID) {
id = *(uint16_t*)(attr + 1);
break;
}
}
if (!id) {
return -1;
}
recv(sock, nlmsg->buf, sizeof(nlmsg->buf), 0); /* recv ack */
return id;
}
static void netlink_devlink_netns_move(const char* bus_name,
const char* dev_name, int netns_fd)
{
struct genlmsghdr genlhdr;
int sock;
int id, err;
sock = socket(AF_NETLINK, SOCK_RAW, NETLINK_GENERIC);
if (sock == -1)
exit(1);
id = netlink_devlink_id_get(&nlmsg, sock);
if (id == -1)
goto error;
memset(&genlhdr, 0, sizeof(genlhdr));
genlhdr.cmd = DEVLINK_CMD_RELOAD;
netlink_init(&nlmsg, id, 0, &genlhdr, sizeof(genlhdr));
netlink_attr(&nlmsg, DEVLINK_ATTR_BUS_NAME, bus_name, strlen(bus_name) + 1);
netlink_attr(&nlmsg, DEVLINK_ATTR_DEV_NAME, dev_name, strlen(dev_name) + 1);
netlink_attr(&nlmsg, DEVLINK_ATTR_NETNS_FD, &netns_fd, sizeof(netns_fd));
err = netlink_send(&nlmsg, sock);
if (err) {
}
error:
close(sock);
}
static struct nlmsg nlmsg2;
static void initialize_devlink_ports(const char* bus_name, const char* dev_name,
const char* netdev_prefix)
{
struct genlmsghdr genlhdr;
int len, total_len, id, err, offset;
uint16_t netdev_index;
int sock = socket(AF_NETLINK, SOCK_RAW, NETLINK_GENERIC);
if (sock == -1)
exit(1);
int rtsock = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
if (rtsock == -1)
exit(1);
id = netlink_devlink_id_get(&nlmsg, sock);
if (id == -1)
goto error;
memset(&genlhdr, 0, sizeof(genlhdr));
genlhdr.cmd = DEVLINK_CMD_PORT_GET;
netlink_init(&nlmsg, id, NLM_F_DUMP, &genlhdr, sizeof(genlhdr));
netlink_attr(&nlmsg, DEVLINK_ATTR_BUS_NAME, bus_name, strlen(bus_name) + 1);
netlink_attr(&nlmsg, DEVLINK_ATTR_DEV_NAME, dev_name, strlen(dev_name) + 1);
err = netlink_send_ext(&nlmsg, sock, id, &total_len);
if (err) {
goto error;
}
offset = 0;
netdev_index = 0;
while ((len = netlink_next_msg(&nlmsg, offset, total_len)) != -1) {
struct nlattr* attr = (struct nlattr*)(nlmsg.buf + offset + NLMSG_HDRLEN +
NLMSG_ALIGN(sizeof(genlhdr)));
for (; (char*)attr < nlmsg.buf + offset + len;
attr = (struct nlattr*)((char*)attr + NLMSG_ALIGN(attr->nla_len))) {
if (attr->nla_type == DEVLINK_ATTR_NETDEV_NAME) {
char* port_name;
char netdev_name[IFNAMSIZ];
port_name = (char*)(attr + 1);
snprintf(netdev_name, sizeof(netdev_name), "%s%d", netdev_prefix,
netdev_index);
netlink_device_change(&nlmsg2, rtsock, port_name, true, 0, 0, 0,
netdev_name);
break;
}
}
offset += len;
netdev_index++;
}
error:
close(rtsock);
close(sock);
}
static void initialize_devlink_pci(void)
{
int netns = open("/proc/self/ns/net", O_RDONLY);
if (netns == -1)
exit(1);
int ret = setns(kInitNetNsFd, 0);
if (ret == -1)
exit(1);
netlink_devlink_netns_move("pci", "0000:00:10.0", netns);
ret = setns(netns, 0);
if (ret == -1)
exit(1);
close(netns);
initialize_devlink_ports("pci", "0000:00:10.0", "netpci");
}
uint64_t r[2] = {0xffffffffffffffff, 0xffffffffffffffff};
int main(void)
{
syscall(__NR_mmap, 0x20000000ul, 0x1000000ul, 3ul, 0x32ul, -1, 0);
intptr_t res = 0;
res = syscall(__NR_socket, 2ul, 2ul, 0ul);
if (res != -1)
r[0] = res;
memcpy((void*)0x20000240, "mangle\000\000\000\000\000\000\000\000\000\000\000"
"\000\000\000\000\000\000\000\000\000\000\000\000"
"\000\000\000",
32);
*(uint32_t*)0x20000260 = 0x1f;
*(uint32_t*)0x20000264 = 6;
*(uint32_t*)0x20000268 = 0x3b0;
*(uint32_t*)0x2000026c = 0x280;
*(uint32_t*)0x20000270 = 0x280;
*(uint32_t*)0x20000274 = 0x130;
*(uint32_t*)0x20000278 = 0;
*(uint32_t*)0x2000027c = 0x280;
*(uint32_t*)0x20000280 = 0x318;
*(uint32_t*)0x20000284 = 0x318;
*(uint32_t*)0x20000288 = 0x318;
*(uint32_t*)0x2000028c = 0x318;
*(uint32_t*)0x20000290 = 0x318;
*(uint32_t*)0x20000294 = 6;
*(uint64_t*)0x20000298 = 0;
*(uint8_t*)0x200002a0 = 0;
*(uint8_t*)0x200002a1 = 0;
*(uint8_t*)0x200002a2 = 0;
*(uint8_t*)0x200002a3 = 0;
*(uint8_t*)0x200002a4 = 0;
*(uint8_t*)0x200002a5 = 0;
*(uint8_t*)0x200002a6 = 0;
*(uint8_t*)0x200002a7 = 0;
*(uint8_t*)0x200002a8 = 0;
*(uint8_t*)0x200002a9 = 0;
*(uint8_t*)0x200002aa = 0;
*(uint8_t*)0x200002ab = 0;
*(uint8_t*)0x200002ac = 0;
*(uint8_t*)0x200002ad = 0;
*(uint8_t*)0x200002ae = 0;
*(uint8_t*)0x200002af = 0;
*(uint8_t*)0x200002b0 = 0;
*(uint8_t*)0x200002b1 = 0;
*(uint8_t*)0x200002b2 = 0;
*(uint8_t*)0x200002b3 = 0;
*(uint8_t*)0x200002b4 = 0;
*(uint8_t*)0x200002b5 = 0;
*(uint8_t*)0x200002b6 = 0;
*(uint8_t*)0x200002b7 = 0;
*(uint8_t*)0x200002b8 = 0;
*(uint8_t*)0x200002b9 = 0;
*(uint8_t*)0x200002ba = 0;
*(uint8_t*)0x200002bb = 0;
*(uint8_t*)0x200002bc = 0;
*(uint8_t*)0x200002bd = 0;
*(uint8_t*)0x200002be = 0;
*(uint8_t*)0x200002bf = 0;
*(uint8_t*)0x200002c0 = 0;
*(uint8_t*)0x200002c1 = 0;
*(uint8_t*)0x200002c2 = 0;
*(uint8_t*)0x200002c3 = 0;
*(uint8_t*)0x200002c4 = 0;
*(uint8_t*)0x200002c5 = 0;
*(uint8_t*)0x200002c6 = 0;
*(uint8_t*)0x200002c7 = 0;
*(uint8_t*)0x200002c8 = 0;
*(uint8_t*)0x200002c9 = 0;
*(uint8_t*)0x200002ca = 0;
*(uint8_t*)0x200002cb = 0;
*(uint8_t*)0x200002cc = 0;
*(uint8_t*)0x200002cd = 0;
*(uint8_t*)0x200002ce = 0;
*(uint8_t*)0x200002cf = 0;
*(uint8_t*)0x200002d0 = 0;
*(uint8_t*)0x200002d1 = 0;
*(uint8_t*)0x200002d2 = 0;
*(uint8_t*)0x200002d3 = 0;
*(uint8_t*)0x200002d4 = 0;
*(uint8_t*)0x200002d5 = 0;
*(uint8_t*)0x200002d6 = 0;
*(uint8_t*)0x200002d7 = 0;
*(uint8_t*)0x200002d8 = 0;
*(uint8_t*)0x200002d9 = 0;
*(uint8_t*)0x200002da = 0;
*(uint8_t*)0x200002db = 0;
*(uint8_t*)0x200002dc = 0;
*(uint8_t*)0x200002dd = 0;
*(uint8_t*)0x200002de = 0;
*(uint8_t*)0x200002df = 0;
*(uint8_t*)0x200002e0 = 0;
*(uint8_t*)0x200002e1 = 0;
*(uint8_t*)0x200002e2 = 0;
*(uint8_t*)0x200002e3 = 0;
*(uint8_t*)0x200002e4 = 0;
*(uint8_t*)0x200002e5 = 0;
*(uint8_t*)0x200002e6 = 0;
*(uint8_t*)0x200002e7 = 0;
*(uint8_t*)0x200002e8 = 0;
*(uint8_t*)0x200002e9 = 0;
*(uint8_t*)0x200002ea = 0;
*(uint8_t*)0x200002eb = 0;
*(uint8_t*)0x200002ec = 0;
*(uint8_t*)0x200002ed = 0;
*(uint8_t*)0x200002ee = 0;
*(uint8_t*)0x200002ef = 0;
*(uint8_t*)0x200002f0 = 0;
*(uint8_t*)0x200002f1 = 0;
*(uint8_t*)0x200002f2 = 0;
*(uint8_t*)0x200002f3 = 0;
*(uint32_t*)0x200002f4 = 0;
*(uint16_t*)0x200002f8 = 0x70;
*(uint16_t*)0x200002fa = 0x98;
*(uint32_t*)0x200002fc = 0;
*(uint64_t*)0x20000300 = 0;
*(uint64_t*)0x20000308 = 0;
*(uint16_t*)0x20000310 = 0x28;
memcpy((void*)0x20000312, "TTL\000\000\000\000\000\000\000\000\000\000\000"
"\000\000\000\000\000\000\000\000\000\000\000\000"
"\000\000\000",
29);
*(uint8_t*)0x2000032f = 0;
*(uint8_t*)0x20000330 = 0;
*(uint8_t*)0x20000331 = 0;
*(uint8_t*)0x20000338 = 0;
*(uint8_t*)0x20000339 = 0;
*(uint8_t*)0x2000033a = 0;
*(uint8_t*)0x2000033b = 0;
*(uint8_t*)0x2000033c = 0;
*(uint8_t*)0x2000033d = 0;
*(uint8_t*)0x2000033e = 0;
*(uint8_t*)0x2000033f = 0;
*(uint8_t*)0x20000340 = 0;
*(uint8_t*)0x20000341 = 0;
*(uint8_t*)0x20000342 = 0;
*(uint8_t*)0x20000343 = 0;
*(uint8_t*)0x20000344 = 0;
*(uint8_t*)0x20000345 = 0;
*(uint8_t*)0x20000346 = 0;
*(uint8_t*)0x20000347 = 0;
*(uint8_t*)0x20000348 = 0;
*(uint8_t*)0x20000349 = 0;
*(uint8_t*)0x2000034a = 0;
*(uint8_t*)0x2000034b = 0;
*(uint8_t*)0x2000034c = 0;
*(uint8_t*)0x2000034d = 0;
*(uint8_t*)0x2000034e = 0;
*(uint8_t*)0x2000034f = 0;
*(uint8_t*)0x20000350 = 0;
*(uint8_t*)0x20000351 = 0;
*(uint8_t*)0x20000352 = 0;
*(uint8_t*)0x20000353 = 0;
*(uint8_t*)0x20000354 = 0;
*(uint8_t*)0x20000355 = 0;
*(uint8_t*)0x20000356 = 0;
*(uint8_t*)0x20000357 = 0;
*(uint8_t*)0x20000358 = 0;
*(uint8_t*)0x20000359 = 0;
*(uint8_t*)0x2000035a = 0;
*(uint8_t*)0x2000035b = 0;
*(uint8_t*)0x2000035c = 0;
*(uint8_t*)0x2000035d = 0;
*(uint8_t*)0x2000035e = 0;
*(uint8_t*)0x2000035f = 0;
*(uint8_t*)0x20000360 = 0;
*(uint8_t*)0x20000361 = 0;
*(uint8_t*)0x20000362 = 0;
*(uint8_t*)0x20000363 = 0;
*(uint8_t*)0x20000364 = 0;
*(uint8_t*)0x20000365 = 0;
*(uint8_t*)0x20000366 = 0;
*(uint8_t*)0x20000367 = 0;
*(uint8_t*)0x20000368 = 0;
*(uint8_t*)0x20000369 = 0;
*(uint8_t*)0x2000036a = 0;
*(uint8_t*)0x2000036b = 0;
*(uint8_t*)0x2000036c = 0;
*(uint8_t*)0x2000036d = 0;
*(uint8_t*)0x2000036e = 0;
*(uint8_t*)0x2000036f = 0;
*(uint8_t*)0x20000370 = 0;
*(uint8_t*)0x20000371 = 0;
*(uint8_t*)0x20000372 = 0;
*(uint8_t*)0x20000373 = 0;
*(uint8_t*)0x20000374 = 0;
*(uint8_t*)0x20000375 = 0;
*(uint8_t*)0x20000376 = 0;
*(uint8_t*)0x20000377 = 0;
*(uint8_t*)0x20000378 = 0;
*(uint8_t*)0x20000379 = 0;
*(uint8_t*)0x2000037a = 0;
*(uint8_t*)0x2000037b = 0;
*(uint8_t*)0x2000037c = 0;
*(uint8_t*)0x2000037d = 0;
*(uint8_t*)0x2000037e = 0;
*(uint8_t*)0x2000037f = 0;
*(uint8_t*)0x20000380 = 0;
*(uint8_t*)0x20000381 = 0;
*(uint8_t*)0x20000382 = 0;
*(uint8_t*)0x20000383 = 0;
*(uint8_t*)0x20000384 = 0;
*(uint8_t*)0x20000385 = 0;
*(uint8_t*)0x20000386 = 0;
*(uint8_t*)0x20000387 = 0;
*(uint8_t*)0x20000388 = 0;
*(uint8_t*)0x20000389 = 0;
*(uint8_t*)0x2000038a = 0;
*(uint8_t*)0x2000038b = 0;
*(uint32_t*)0x2000038c = 0;
*(uint16_t*)0x20000390 = 0x70;
*(uint16_t*)0x20000392 = 0x98;
*(uint32_t*)0x20000394 = 0;
*(uint64_t*)0x20000398 = 0;
*(uint64_t*)0x200003a0 = 0;
*(uint16_t*)0x200003a8 = 0x28;
memcpy((void*)0x200003aa, "TTL\000\000\000\000\000\000\000\000\000\000\000"
"\000\000\000\000\000\000\000\000\000\000\000\000"
"\000\000\000",
29);
*(uint8_t*)0x200003c7 = 0;
*(uint8_t*)0x200003c8 = 0;
*(uint8_t*)0x200003c9 = 0;
*(uint32_t*)0x200003d0 = htobe32(0xe0000002);
*(uint8_t*)0x200003d4 = 0xac;
*(uint8_t*)0x200003d5 = 0x14;
*(uint8_t*)0x200003d6 = 0x14;
*(uint8_t*)0x200003d7 = 0xaa;
*(uint32_t*)0x200003d8 = htobe32(0);
*(uint32_t*)0x200003dc = htobe32(0);
memcpy((void*)0x200003e0,
"bpq0\000\000\000\000\000\000\000\000\000\000\000\000", 16);
memcpy((void*)0x200003f0, "erspan0\000\000\000\000\000\000\000\000\000", 16);
*(uint8_t*)0x20000400 = 0;
*(uint8_t*)0x20000410 = 0;
*(uint16_t*)0x20000420 = 0;
*(uint8_t*)0x20000422 = 0;
*(uint8_t*)0x20000423 = 0;
*(uint32_t*)0x20000424 = 0;
*(uint16_t*)0x20000428 = 0x70;
*(uint16_t*)0x2000042a = 0xb8;
*(uint32_t*)0x2000042c = 0;
*(uint64_t*)0x20000430 = 0;
*(uint64_t*)0x20000438 = 0;
*(uint16_t*)0x20000440 = 0x48;
memcpy((void*)0x20000442, "TEE\000\000\000\000\000\000\000\000\000\000\000"
"\000\000\000\000\000\000\000\000\000\000\000\000"
"\000\000\000",
29);
*(uint8_t*)0x2000045f = 1;
*(uint8_t*)0x20000460 = -1;
*(uint8_t*)0x20000461 = 2;
*(uint8_t*)0x20000462 = 0;
*(uint8_t*)0x20000463 = 0;
*(uint8_t*)0x20000464 = 0;
*(uint8_t*)0x20000465 = 0;
*(uint8_t*)0x20000466 = 0;
*(uint8_t*)0x20000467 = 0;
*(uint8_t*)0x20000468 = 0;
*(uint8_t*)0x20000469 = 0;
*(uint8_t*)0x2000046a = 0;
*(uint8_t*)0x2000046b = 0;
*(uint8_t*)0x2000046c = 0;
*(uint8_t*)0x2000046d = 0;
*(uint8_t*)0x2000046e = 0;
*(uint8_t*)0x2000046f = 1;
memcpy((void*)0x20000470,
"gre0\000\000\000\000\000\000\000\000\000\000\000\000", 16);
*(uint64_t*)0x20000480 = 0;
*(uint8_t*)0x20000488 = 0;
*(uint8_t*)0x20000489 = 0;
*(uint8_t*)0x2000048a = 0;
*(uint8_t*)0x2000048b = 0;
*(uint8_t*)0x2000048c = 0;
*(uint8_t*)0x2000048d = 0;
*(uint8_t*)0x2000048e = 0;
*(uint8_t*)0x2000048f = 0;
*(uint8_t*)0x20000490 = 0;
*(uint8_t*)0x20000491 = 0;
*(uint8_t*)0x20000492 = 0;
*(uint8_t*)0x20000493 = 0;
*(uint8_t*)0x20000494 = 0;
*(uint8_t*)0x20000495 = 0;
*(uint8_t*)0x20000496 = 0;
*(uint8_t*)0x20000497 = 0;
*(uint8_t*)0x20000498 = 0;
*(uint8_t*)0x20000499 = 0;
*(uint8_t*)0x2000049a = 0;
*(uint8_t*)0x2000049b = 0;
*(uint8_t*)0x2000049c = 0;
*(uint8_t*)0x2000049d = 0;
*(uint8_t*)0x2000049e = 0;
*(uint8_t*)0x2000049f = 0;
*(uint8_t*)0x200004a0 = 0;
*(uint8_t*)0x200004a1 = 0;
*(uint8_t*)0x200004a2 = 0;
*(uint8_t*)0x200004a3 = 0;
*(uint8_t*)0x200004a4 = 0;
*(uint8_t*)0x200004a5 = 0;
*(uint8_t*)0x200004a6 = 0;
*(uint8_t*)0x200004a7 = 0;
*(uint8_t*)0x200004a8 = 0;
*(uint8_t*)0x200004a9 = 0;
*(uint8_t*)0x200004aa = 0;
*(uint8_t*)0x200004ab = 0;
*(uint8_t*)0x200004ac = 0;
*(uint8_t*)0x200004ad = 0;
*(uint8_t*)0x200004ae = 0;
*(uint8_t*)0x200004af = 0;
*(uint8_t*)0x200004b0 = 0;
*(uint8_t*)0x200004b1 = 0;
*(uint8_t*)0x200004b2 = 0;
*(uint8_t*)0x200004b3 = 0;
*(uint8_t*)0x200004b4 = 0;
*(uint8_t*)0x200004b5 = 0;
*(uint8_t*)0x200004b6 = 0;
*(uint8_t*)0x200004b7 = 0;
*(uint8_t*)0x200004b8 = 0;
*(uint8_t*)0x200004b9 = 0;
*(uint8_t*)0x200004ba = 0;
*(uint8_t*)0x200004bb = 0;
*(uint8_t*)0x200004bc = 0;
*(uint8_t*)0x200004bd = 0;
*(uint8_t*)0x200004be = 0;
*(uint8_t*)0x200004bf = 0;
*(uint8_t*)0x200004c0 = 0;
*(uint8_t*)0x200004c1 = 0;
*(uint8_t*)0x200004c2 = 0;
*(uint8_t*)0x200004c3 = 0;
*(uint8_t*)0x200004c4 = 0;
*(uint8_t*)0x200004c5 = 0;
*(uint8_t*)0x200004c6 = 0;
*(uint8_t*)0x200004c7 = 0;
*(uint8_t*)0x200004c8 = 0;
*(uint8_t*)0x200004c9 = 0;
*(uint8_t*)0x200004ca = 0;
*(uint8_t*)0x200004cb = 0;
*(uint8_t*)0x200004cc = 0;
*(uint8_t*)0x200004cd = 0;
*(uint8_t*)0x200004ce = 0;
*(uint8_t*)0x200004cf = 0;
*(uint8_t*)0x200004d0 = 0;
*(uint8_t*)0x200004d1 = 0;
*(uint8_t*)0x200004d2 = 0;
*(uint8_t*)0x200004d3 = 0;
*(uint8_t*)0x200004d4 = 0;
*(uint8_t*)0x200004d5 = 0;
*(uint8_t*)0x200004d6 = 0;
*(uint8_t*)0x200004d7 = 0;
*(uint8_t*)0x200004d8 = 0;
*(uint8_t*)0x200004d9 = 0;
*(uint8_t*)0x200004da = 0;
*(uint8_t*)0x200004db = 0;
*(uint32_t*)0x200004dc = 0;
*(uint16_t*)0x200004e0 = 0x70;
*(uint16_t*)0x200004e2 = 0x98;
*(uint32_t*)0x200004e4 = 0;
*(uint64_t*)0x200004e8 = 0;
*(uint64_t*)0x200004f0 = 0;
*(uint16_t*)0x200004f8 = 0x28;
memcpy((void*)0x200004fa, "CHECKSUM\000\000\000\000\000\000\000\000\000\000"
"\000\000\000\000\000\000\000\000\000\000\000",
29);
*(uint8_t*)0x20000517 = 0;
*(uint8_t*)0x20000518 = 1;
*(uint8_t*)0x20000520 = 0;
*(uint8_t*)0x20000521 = 0;
*(uint8_t*)0x20000522 = 0;
*(uint8_t*)0x20000523 = 0;
*(uint8_t*)0x20000524 = 0;
*(uint8_t*)0x20000525 = 0;
*(uint8_t*)0x20000526 = 0;
*(uint8_t*)0x20000527 = 0;
*(uint8_t*)0x20000528 = 0;
*(uint8_t*)0x20000529 = 0;
*(uint8_t*)0x2000052a = 0;
*(uint8_t*)0x2000052b = 0;
*(uint8_t*)0x2000052c = 0;
*(uint8_t*)0x2000052d = 0;
*(uint8_t*)0x2000052e = 0;
*(uint8_t*)0x2000052f = 0;
*(uint8_t*)0x20000530 = 0;
*(uint8_t*)0x20000531 = 0;
*(uint8_t*)0x20000532 = 0;
*(uint8_t*)0x20000533 = 0;
*(uint8_t*)0x20000534 = 0;
*(uint8_t*)0x20000535 = 0;
*(uint8_t*)0x20000536 = 0;
*(uint8_t*)0x20000537 = 0;
*(uint8_t*)0x20000538 = 0;
*(uint8_t*)0x20000539 = 0;
*(uint8_t*)0x2000053a = 0;
*(uint8_t*)0x2000053b = 0;
*(uint8_t*)0x2000053c = 0;
*(uint8_t*)0x2000053d = 0;
*(uint8_t*)0x2000053e = 0;
*(uint8_t*)0x2000053f = 0;
*(uint8_t*)0x20000540 = 0;
*(uint8_t*)0x20000541 = 0;
*(uint8_t*)0x20000542 = 0;
*(uint8_t*)0x20000543 = 0;
*(uint8_t*)0x20000544 = 0;
*(uint8_t*)0x20000545 = 0;
*(uint8_t*)0x20000546 = 0;
*(uint8_t*)0x20000547 = 0;
*(uint8_t*)0x20000548 = 0;
*(uint8_t*)0x20000549 = 0;
*(uint8_t*)0x2000054a = 0;
*(uint8_t*)0x2000054b = 0;
*(uint8_t*)0x2000054c = 0;
*(uint8_t*)0x2000054d = 0;
*(uint8_t*)0x2000054e = 0;
*(uint8_t*)0x2000054f = 0;
*(uint8_t*)0x20000550 = 0;
*(uint8_t*)0x20000551 = 0;
*(uint8_t*)0x20000552 = 0;
*(uint8_t*)0x20000553 = 0;
*(uint8_t*)0x20000554 = 0;
*(uint8_t*)0x20000555 = 0;
*(uint8_t*)0x20000556 = 0;
*(uint8_t*)0x20000557 = 0;
*(uint8_t*)0x20000558 = 0;
*(uint8_t*)0x20000559 = 0;
*(uint8_t*)0x2000055a = 0;
*(uint8_t*)0x2000055b = 0;
*(uint8_t*)0x2000055c = 0;
*(uint8_t*)0x2000055d = 0;
*(uint8_t*)0x2000055e = 0;
*(uint8_t*)0x2000055f = 0;
*(uint8_t*)0x20000560 = 0;
*(uint8_t*)0x20000561 = 0;
*(uint8_t*)0x20000562 = 0;
*(uint8_t*)0x20000563 = 0;
*(uint8_t*)0x20000564 = 0;
*(uint8_t*)0x20000565 = 0;
*(uint8_t*)0x20000566 = 0;
*(uint8_t*)0x20000567 = 0;
*(uint8_t*)0x20000568 = 0;
*(uint8_t*)0x20000569 = 0;
*(uint8_t*)0x2000056a = 0;
*(uint8_t*)0x2000056b = 0;
*(uint8_t*)0x2000056c = 0;
*(uint8_t*)0x2000056d = 0;
*(uint8_t*)0x2000056e = 0;
*(uint8_t*)0x2000056f = 0;
*(uint8_t*)0x20000570 = 0;
*(uint8_t*)0x20000571 = 0;
*(uint8_t*)0x20000572 = 0;
*(uint8_t*)0x20000573 = 0;
*(uint32_t*)0x20000574 = 0;
*(uint16_t*)0x20000578 = 0x70;
*(uint16_t*)0x2000057a = 0x98;
*(uint32_t*)0x2000057c = 0;
*(uint64_t*)0x20000580 = 0;
*(uint64_t*)0x20000588 = 0;
*(uint16_t*)0x20000590 = 0x28;
memcpy((void*)0x20000592, "CHECKSUM\000\000\000\000\000\000\000\000\000\000"
"\000\000\000\000\000\000\000\000\000\000\000",
29);
*(uint8_t*)0x200005af = 0;
*(uint8_t*)0x200005b0 = 1;
*(uint8_t*)0x200005b8 = 0;
*(uint8_t*)0x200005b9 = 0;
*(uint8_t*)0x200005ba = 0;
*(uint8_t*)0x200005bb = 0;
*(uint8_t*)0x200005bc = 0;
*(uint8_t*)0x200005bd = 0;
*(uint8_t*)0x200005be = 0;
*(uint8_t*)0x200005bf = 0;
*(uint8_t*)0x200005c0 = 0;
*(uint8_t*)0x200005c1 = 0;
*(uint8_t*)0x200005c2 = 0;
*(uint8_t*)0x200005c3 = 0;
*(uint8_t*)0x200005c4 = 0;
*(uint8_t*)0x200005c5 = 0;
*(uint8_t*)0x200005c6 = 0;
*(uint8_t*)0x200005c7 = 0;
*(uint8_t*)0x200005c8 = 0;
*(uint8_t*)0x200005c9 = 0;
*(uint8_t*)0x200005ca = 0;
*(uint8_t*)0x200005cb = 0;
*(uint8_t*)0x200005cc = 0;
*(uint8_t*)0x200005cd = 0;
*(uint8_t*)0x200005ce = 0;
*(uint8_t*)0x200005cf = 0;
*(uint8_t*)0x200005d0 = 0;
*(uint8_t*)0x200005d1 = 0;
*(uint8_t*)0x200005d2 = 0;
*(uint8_t*)0x200005d3 = 0;
*(uint8_t*)0x200005d4 = 0;
*(uint8_t*)0x200005d5 = 0;
*(uint8_t*)0x200005d6 = 0;
*(uint8_t*)0x200005d7 = 0;
*(uint8_t*)0x200005d8 = 0;
*(uint8_t*)0x200005d9 = 0;
*(uint8_t*)0x200005da = 0;
*(uint8_t*)0x200005db = 0;
*(uint8_t*)0x200005dc = 0;
*(uint8_t*)0x200005dd = 0;
*(uint8_t*)0x200005de = 0;
*(uint8_t*)0x200005df = 0;
*(uint8_t*)0x200005e0 = 0;
*(uint8_t*)0x200005e1 = 0;
*(uint8_t*)0x200005e2 = 0;
*(uint8_t*)0x200005e3 = 0;
*(uint8_t*)0x200005e4 = 0;
*(uint8_t*)0x200005e5 = 0;
*(uint8_t*)0x200005e6 = 0;
*(uint8_t*)0x200005e7 = 0;
*(uint8_t*)0x200005e8 = 0;
*(uint8_t*)0x200005e9 = 0;
*(uint8_t*)0x200005ea = 0;
*(uint8_t*)0x200005eb = 0;
*(uint8_t*)0x200005ec = 0;
*(uint8_t*)0x200005ed = 0;
*(uint8_t*)0x200005ee = 0;
*(uint8_t*)0x200005ef = 0;
*(uint8_t*)0x200005f0 = 0;
*(uint8_t*)0x200005f1 = 0;
*(uint8_t*)0x200005f2 = 0;
*(uint8_t*)0x200005f3 = 0;
*(uint8_t*)0x200005f4 = 0;
*(uint8_t*)0x200005f5 = 0;
*(uint8_t*)0x200005f6 = 0;
*(uint8_t*)0x200005f7 = 0;
*(uint8_t*)0x200005f8 = 0;
*(uint8_t*)0x200005f9 = 0;
*(uint8_t*)0x200005fa = 0;
*(uint8_t*)0x200005fb = 0;
*(uint8_t*)0x200005fc = 0;
*(uint8_t*)0x200005fd = 0;
*(uint8_t*)0x200005fe = 0;
*(uint8_t*)0x200005ff = 0;
*(uint8_t*)0x20000600 = 0;
*(uint8_t*)0x20000601 = 0;
*(uint8_t*)0x20000602 = 0;
*(uint8_t*)0x20000603 = 0;
*(uint8_t*)0x20000604 = 0;
*(uint8_t*)0x20000605 = 0;
*(uint8_t*)0x20000606 = 0;
*(uint8_t*)0x20000607 = 0;
*(uint8_t*)0x20000608 = 0;
*(uint8_t*)0x20000609 = 0;
*(uint8_t*)0x2000060a = 0;
*(uint8_t*)0x2000060b = 0;
*(uint32_t*)0x2000060c = 0;
*(uint16_t*)0x20000610 = 0x70;
*(uint16_t*)0x20000612 = 0x98;
*(uint32_t*)0x20000614 = 0;
*(uint64_t*)0x20000618 = 0;
*(uint64_t*)0x20000620 = 0;
*(uint16_t*)0x20000628 = 0x28;
memcpy((void*)0x2000062a, "\000\000\000\000\000\000\000\000\000\000\000\000"
"\000\000\000\000\000\000\000\000\000\000\000\000"
"\000\000\000\000\000",
29);
*(uint8_t*)0x20000647 = 0;
*(uint32_t*)0x20000648 = 0xfffffffe;
syscall(__NR_setsockopt, r[0], 0ul, 0x40ul, 0x20000240ul, 0x263ul);
res = syscall(__NR_socket, 2ul, 0x4000000000000001ul, 0);
if (res != -1)
r[1] = res;
*(uint32_t*)0x20000040 = 0x74;
syscall(__NR_setsockopt, r[1], 6ul, 0x80000000000002ul, 0x20000040ul, 4ul);
*(uint16_t*)0x20000280 = 2;
*(uint16_t*)0x20000282 = htobe16(0x4e23);
*(uint32_t*)0x20000284 = htobe32(0xe0000001);
syscall(__NR_bind, r[1], 0x20000280ul, 0x10ul);
*(uint16_t*)0x20e68000 = 2;
*(uint16_t*)0x20e68002 = htobe16(0x4e23);
*(uint32_t*)0x20e68004 = htobe32(0x7f000001);
syscall(__NR_sendto, r[1], 0ul, 0ul, 0x200007fdul, 0x20e68000ul, 0x10ul);
memcpy((void*)0x20000180,
"\x20\x26\x8a\x92\x7f\x1f\x65\x88\xb9\x67\x48\x12\x41\xba\x78\x60\xf4"
"\x6e\xf6\x5a\xc6\x18\xde\xd8\x97\x48\x95\xab\xea\xf4\xb4\x83\x4f\xf9"
"\x22\xb3\xf1\xe0\xb0\x2b\xd6\x7a\xa0\x30\x59\xbc\xec\xc7\xa9\x5c\x25"
"\xa3\xa0\x7e\x75\x80\x44\xab\x4e\xa6\xf7\xae\x55\xd8\x8f\xec\xf9\x22"
"\x1a\x75\x11\xbf\x74\x6b\xec\x66\xba\x5c\x0f\xe3\xac\x47\xb6\x1d\xb6"
"\xb4\xc4\x1b\xd1\xa5\x25\x9e\x62\x50\x6c\xda\x28\x7b\x85\x7a\xac",
101);
syscall(__NR_sendto, r[1], 0x20000180ul, 0x8293ul, 0x4000002ul, 0ul, 0x27ul);
return 0;
}