// KASAN: slab-out-of-bounds Read in ip6_xmit
// https://syzkaller.appspot.com/bug?id=a0962e4e2b48e01fc8079a3a1b3759d54925e547
// status:open
// autogenerated by syzkaller (http://github.com/google/syzkaller)

#define _GNU_SOURCE
#include <endian.h>
#include <stdint.h>
#include <string.h>
#include <sys/syscall.h>
#include <unistd.h>

#define BITMASK_LEN(type, bf_len) (type)((1ull << (bf_len)) - 1)

#define BITMASK_LEN_OFF(type, bf_off, bf_len)                                  \
  (type)(BITMASK_LEN(type, (bf_len)) << (bf_off))

#define STORE_BY_BITMASK(type, addr, val, bf_off, bf_len)                      \
  if ((bf_off) == 0 && (bf_len) == 0) {                                        \
    *(type*)(addr) = (type)(val);                                              \
  } else {                                                                     \
    type new_val = *(type*)(addr);                                             \
    new_val &= ~BITMASK_LEN_OFF(type, (bf_off), (bf_len));                     \
    new_val |= ((type)(val)&BITMASK_LEN(type, (bf_len))) << (bf_off);          \
    *(type*)(addr) = new_val;                                                  \
  }

struct csum_inet {
  uint32_t acc;
};

static void csum_inet_init(struct csum_inet* csum)
{
  csum->acc = 0;
}

static void csum_inet_update(struct csum_inet* csum, const uint8_t* data,
                             size_t length)
{
  if (length == 0)
    return;

  size_t i;
  for (i = 0; i < length - 1; i += 2)
    csum->acc += *(uint16_t*)&data[i];

  if (length & 1)
    csum->acc += (uint16_t)data[length - 1];

  while (csum->acc > 0xffff)
    csum->acc = (csum->acc & 0xffff) + (csum->acc >> 16);
}

static uint16_t csum_inet_digest(struct csum_inet* csum)
{
  return ~csum->acc;
}

uint64_t r[2] = {0xffffffffffffffff, 0xffffffffffffffff};
void loop()
{
  long res;
  res = syscall(__NR_socket, 0xa, 2, 0);
  if (res != -1)
    r[0] = res;
  *(uint16_t*)0x20000000 = 0xa;
  *(uint16_t*)0x20000002 = htobe16(0x4e20);
  *(uint32_t*)0x20000004 = 0;
  *(uint8_t*)0x20000008 = 0;
  *(uint8_t*)0x20000009 = 0;
  *(uint8_t*)0x2000000a = 0;
  *(uint8_t*)0x2000000b = 0;
  *(uint8_t*)0x2000000c = 0;
  *(uint8_t*)0x2000000d = 0;
  *(uint8_t*)0x2000000e = 0;
  *(uint8_t*)0x2000000f = 0;
  *(uint8_t*)0x20000010 = 0;
  *(uint8_t*)0x20000011 = 0;
  *(uint8_t*)0x20000012 = -1;
  *(uint8_t*)0x20000013 = -1;
  *(uint32_t*)0x20000014 = htobe32(0x7f000001);
  *(uint32_t*)0x20000018 = 5;
  syscall(__NR_connect, r[0], 0x20000000, 0x1c);
  *(uint16_t*)0x200000c0 = 0xa;
  *(uint16_t*)0x200000c2 = htobe16(0x4e22);
  *(uint32_t*)0x200000c4 = 0xdba;
  *(uint8_t*)0x200000c8 = -1;
  *(uint8_t*)0x200000c9 = 1;
  *(uint8_t*)0x200000ca = 0;
  *(uint8_t*)0x200000cb = 0;
  *(uint8_t*)0x200000cc = 0;
  *(uint8_t*)0x200000cd = 0;
  *(uint8_t*)0x200000ce = 0;
  *(uint8_t*)0x200000cf = 0;
  *(uint8_t*)0x200000d0 = 0;
  *(uint8_t*)0x200000d1 = 0;
  *(uint8_t*)0x200000d2 = 0;
  *(uint8_t*)0x200000d3 = 0;
  *(uint8_t*)0x200000d4 = 0;
  *(uint8_t*)0x200000d5 = 0;
  *(uint8_t*)0x200000d6 = 0;
  *(uint8_t*)0x200000d7 = 1;
  *(uint32_t*)0x200000d8 = 9;
  syscall(__NR_connect, r[0], 0x200000c0, 0x1c);
  res = syscall(__NR_socket, 0x18, 1, 1);
  if (res != -1)
    r[1] = res;
  *(uint16_t*)0x205fafd2 = 0x18;
  *(uint32_t*)0x205fafd4 = 1;
  *(uint32_t*)0x205fafd8 = 0;
  *(uint32_t*)0x205fafdc = r[0];
  *(uint16_t*)0x205fafe0 = 2;
  *(uint16_t*)0x205fafe2 = htobe16(0x4e21);
  *(uint32_t*)0x205fafe4 = htobe32(0xe0000002);
  *(uint8_t*)0x205fafe8 = 0;
  *(uint8_t*)0x205fafe9 = 0;
  *(uint8_t*)0x205fafea = 0;
  *(uint8_t*)0x205fafeb = 0;
  *(uint8_t*)0x205fafec = 0;
  *(uint8_t*)0x205fafed = 0;
  *(uint8_t*)0x205fafee = 0;
  *(uint8_t*)0x205fafef = 0;
  *(uint32_t*)0x205faff0 = 4;
  *(uint32_t*)0x205faff4 = 0;
  *(uint32_t*)0x205faff8 = 2;
  *(uint32_t*)0x205faffc = 0;
  syscall(__NR_connect, r[1], 0x205fafd2, 0x2e);
  *(uint64_t*)0x2037ffc8 = 0x20041000;
  *(uint16_t*)0x20041000 = 0x10;
  *(uint16_t*)0x20041002 = 0;
  *(uint32_t*)0x20041004 = 0;
  *(uint32_t*)0x20041008 = 2;
  *(uint32_t*)0x2037ffd0 = 0xc;
  *(uint64_t*)0x2037ffd8 = 0x20e6c000;
  *(uint64_t*)0x20e6c000 = 0x20e6cff0;
  *(uint32_t*)0x20e6cff0 = 0x10;
  *(uint16_t*)0x20e6cff4 = 0x14;
  *(uint16_t*)0x20e6cff6 = 0x200;
  *(uint32_t*)0x20e6cff8 = 0;
  *(uint32_t*)0x20e6cffc = 3;
  *(uint64_t*)0x20e6c008 = 0x10;
  *(uint64_t*)0x2037ffe0 = 1;
  *(uint64_t*)0x2037ffe8 = 0;
  *(uint64_t*)0x2037fff0 = 0;
  *(uint32_t*)0x2037fff8 = 0x8800;
  syscall(__NR_sendmsg, r[1], 0x2037ffc8, 0x81);
  *(uint8_t*)0x20000000 = 1;
  *(uint8_t*)0x20000001 = 0x80;
  *(uint8_t*)0x20000002 = 0xc2;
  *(uint8_t*)0x20000003 = 0;
  *(uint8_t*)0x20000004 = 0;
  *(uint8_t*)0x20000005 = 0;
  *(uint8_t*)0x20000006 = 0xaa;
  *(uint8_t*)0x20000007 = 0xaa;
  *(uint8_t*)0x20000008 = 0xaa;
  *(uint8_t*)0x20000009 = 0xaa;
  *(uint8_t*)0x2000000a = 0;
  *(uint8_t*)0x2000000b = 0;
  *(uint16_t*)0x2000000c = htobe16(0x800);
  STORE_BY_BITMASK(uint8_t, 0x2000000e, 5, 0, 4);
  STORE_BY_BITMASK(uint8_t, 0x2000000e, 4, 4, 4);
  STORE_BY_BITMASK(uint8_t, 0x2000000f, 0, 0, 2);
  STORE_BY_BITMASK(uint8_t, 0x2000000f, 0, 2, 6);
  *(uint16_t*)0x20000010 = htobe16(0x24);
  *(uint16_t*)0x20000012 = htobe16(0);
  *(uint16_t*)0x20000014 = htobe16(0);
  *(uint8_t*)0x20000016 = 0;
  *(uint8_t*)0x20000017 = 0x2f;
  *(uint16_t*)0x20000018 = 0;
  *(uint8_t*)0x2000001a = 0xac;
  *(uint8_t*)0x2000001b = 0x14;
  *(uint8_t*)0x2000001c = -1;
  *(uint8_t*)0x2000001d = 0xaa;
  *(uint32_t*)0x2000001e = htobe32(-1);
  STORE_BY_BITMASK(uint16_t, 0x20000022, 0, 0, 1);
  STORE_BY_BITMASK(uint16_t, 0x20000022, 0, 1, 1);
  STORE_BY_BITMASK(uint16_t, 0x20000022, 1, 2, 1);
  STORE_BY_BITMASK(uint16_t, 0x20000022, 0, 3, 1);
  STORE_BY_BITMASK(uint16_t, 0x20000022, 0xb, 4, 4);
  STORE_BY_BITMASK(uint16_t, 0x20000022, 0, 8, 1);
  STORE_BY_BITMASK(uint16_t, 0x20000022, 3, 9, 4);
  STORE_BY_BITMASK(uint16_t, 0x20000022, 8, 13, 3);
  *(uint16_t*)0x20000024 = htobe16(0x880b);
  *(uint16_t*)0x20000026 = htobe16(0);
  *(uint16_t*)0x20000028 = htobe16(0);
  STORE_BY_BITMASK(uint16_t, 0x2000002a, 0, 0, 1);
  STORE_BY_BITMASK(uint16_t, 0x2000002a, 0, 1, 1);
  STORE_BY_BITMASK(uint16_t, 0x2000002a, 0, 2, 1);
  STORE_BY_BITMASK(uint16_t, 0x2000002a, 0, 3, 1);
  STORE_BY_BITMASK(uint16_t, 0x2000002a, 0, 4, 9);
  STORE_BY_BITMASK(uint16_t, 0x2000002a, 0, 13, 3);
  *(uint16_t*)0x2000002c = htobe16(0x800);
  STORE_BY_BITMASK(uint16_t, 0x2000002e, 0, 0, 1);
  STORE_BY_BITMASK(uint16_t, 0x2000002e, 0, 1, 1);
  STORE_BY_BITMASK(uint16_t, 0x2000002e, 0, 2, 1);
  STORE_BY_BITMASK(uint16_t, 0x2000002e, 0, 3, 1);
  STORE_BY_BITMASK(uint16_t, 0x2000002e, 0, 4, 9);
  STORE_BY_BITMASK(uint16_t, 0x2000002e, 0, 13, 3);
  *(uint16_t*)0x20000030 = htobe16(0x86dd);
  *(uint16_t*)0x20000032 = 0;
  *(uint16_t*)0x20000034 = htobe16(0);
  *(uint32_t*)0x20000036 = htobe32(0);
  STORE_BY_BITMASK(uint8_t, 0x2000003a, 0, 0, 4);
  STORE_BY_BITMASK(uint8_t, 0x2000003a, 0, 4, 4);
  *(uint8_t*)0x2000003b = 0;
  STORE_BY_BITMASK(uint8_t, 0x2000003c, 0, 0, 2);
  STORE_BY_BITMASK(uint8_t, 0x2000003c, 0, 2, 1);
  STORE_BY_BITMASK(uint8_t, 0x2000003c, 0, 3, 2);
  STORE_BY_BITMASK(uint8_t, 0x2000003c, 0, 5, 3);
  *(uint8_t*)0x2000003d = 0;
  *(uint32_t*)0x2000003e = 0;
  *(uint32_t*)0x20000042 = htobe32(0);
  *(uint16_t*)0x20000046 = 0;
  *(uint16_t*)0x20000048 = htobe16(0);
  *(uint32_t*)0x2000004a = htobe32(0);
  STORE_BY_BITMASK(uint8_t, 0x2000004e, 0, 0, 4);
  STORE_BY_BITMASK(uint8_t, 0x2000004e, 0, 4, 4);
  *(uint8_t*)0x2000004f = 0;
  STORE_BY_BITMASK(uint8_t, 0x20000050, 0, 0, 2);
  STORE_BY_BITMASK(uint8_t, 0x20000050, 0, 2, 1);
  STORE_BY_BITMASK(uint8_t, 0x20000050, 0, 3, 2);
  STORE_BY_BITMASK(uint8_t, 0x20000050, 0, 5, 3);
  *(uint8_t*)0x20000051 = 0;
  *(uint32_t*)0x20000052 = 0;
  *(uint32_t*)0x20000056 = htobe32(0);
  *(uint16_t*)0x2000005a = htobe16(0);
  STORE_BY_BITMASK(uint8_t, 0x2000005c, 0, 0, 2);
  STORE_BY_BITMASK(uint8_t, 0x2000005c, 0, 2, 5);
  STORE_BY_BITMASK(uint8_t, 0x2000005c, 0, 7, 1);
  STORE_BY_BITMASK(uint8_t, 0x2000005d, 0, 0, 1);
  STORE_BY_BITMASK(uint8_t, 0x2000005d, 0, 1, 2);
  STORE_BY_BITMASK(uint8_t, 0x2000005d, 0, 3, 1);
  STORE_BY_BITMASK(uint8_t, 0x2000005d, 0, 4, 1);
  *(uint16_t*)0x2000005e = 0;
  *(uint16_t*)0x20000060 = htobe16(0);
  *(uint32_t*)0x20000062 = htobe32(0);
  struct csum_inet csum_1;
  csum_inet_init(&csum_1);
  csum_inet_update(&csum_1, (const uint8_t*)0x2000000e, 20);
  *(uint16_t*)0x20000018 = csum_inet_digest(&csum_1);
}

int main()
{
  syscall(__NR_mmap, 0x20000000, 0x1000000, 3, 0x32, -1, 0);
  loop();
  return 0;
}
