// https://syzkaller.appspot.com/bug?id=5d99b5c45162b95f7e44a34fc013c7d62c86b81d
// autogenerated by syzkaller (https://github.com/google/syzkaller)

#define _GNU_SOURCE

#include <endian.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/syscall.h>
#include <sys/types.h>
#include <unistd.h>

#ifndef __NR_add_key
#define __NR_add_key 217
#endif
#ifndef __NR_mmap
#define __NR_mmap 222
#endif

uint64_t r[1] = {0x0};

int main(void)
{
  syscall(__NR_mmap, /*addr=*/0x1ffff000ul, /*len=*/0x1000ul, /*prot=*/0ul,
          /*flags=*/0x32ul, /*fd=*/-1, /*offset=*/0ul);
  syscall(__NR_mmap, /*addr=*/0x20000000ul, /*len=*/0x1000000ul, /*prot=*/7ul,
          /*flags=*/0x32ul, /*fd=*/-1, /*offset=*/0ul);
  syscall(__NR_mmap, /*addr=*/0x21000000ul, /*len=*/0x1000ul, /*prot=*/0ul,
          /*flags=*/0x32ul, /*fd=*/-1, /*offset=*/0ul);
  intptr_t res = 0;
  memcpy((void*)0x20000000, "keyring\000", 8);
  memcpy((void*)0x20000040, "syz", 3);
  *(uint8_t*)0x20000043 = 0x22;
  *(uint8_t*)0x20000044 = 0;
  res = syscall(__NR_add_key, /*type=*/0x20000000ul, /*desc=*/0x20000040ul,
                /*payload=*/0ul, /*paylen=*/0ul, /*keyring=*/0xfffffffc);
  if (res != -1)
    r[0] = res;
  memcpy((void*)0x200003c0, "dns_resolver\000", 13);
  memcpy((void*)0x20000080, "\x00\x00\x01\x02", 4);
  syscall(__NR_add_key, /*type=*/0x200003c0ul, /*desc=*/0ul,
          /*payload=*/0x20000080ul, /*paylen=*/4ul, /*keyring=*/r[0]);
  return 0;
}