text: // autogenerated by syzkaller (https://github.com/google/syzkaller)
  
  #define _GNU_SOURCE
  
  #include <endian.h>
  #include <errno.h>
  #include <fcntl.h>
  #include <sched.h>
  #include <stdarg.h>
  #include <stdbool.h>
  #include <stdint.h>
  #include <stdio.h>
  #include <stdlib.h>
  #include <string.h>
  #include <sys/mount.h>
  #include <sys/prctl.h>
  #include <sys/resource.h>
  #include <sys/stat.h>
  #include <sys/syscall.h>
  #include <sys/time.h>
  #include <sys/types.h>
  #include <sys/wait.h>
  #include <unistd.h>
  
  #include <linux/capability.h>
  
  #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 bool write_file(const char* file, const char* what, ...)
  {
    char buf[1024];
    va_list args;
    va_start(args, what);
    vsnprintf(buf, sizeof(buf), what, args);
    va_end(args);
    buf[sizeof(buf) - 1] = 0;
    int len = strlen(buf);
    int fd = open(file, O_WRONLY | O_CLOEXEC);
    if (fd == -1)
      return false;
    if (write(fd, buf, len) != len) {
      int err = errno;
      close(fd);
      errno = err;
      return false;
    }
    close(fd);
    return true;
  }
  
  static void setup_common()
  {
    if (mount(0, "/sys/fs/fuse/connections", "fusectl", 0, 0)) {
    }
  }
  
  static void loop();
  
  static void sandbox_common()
  {
    prctl(PR_SET_PDEATHSIG, SIGKILL, 0, 0, 0);
    setpgrp();
    setsid();
    struct rlimit rlim;
    rlim.rlim_cur = rlim.rlim_max = (200 << 20);
    setrlimit(RLIMIT_AS, &rlim);
    rlim.rlim_cur = rlim.rlim_max = 32 << 20;
    setrlimit(RLIMIT_MEMLOCK, &rlim);
    rlim.rlim_cur = rlim.rlim_max = 136 << 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);
    if (unshare(CLONE_NEWNS)) {
    }
    if (unshare(CLONE_NEWIPC)) {
    }
    if (unshare(0x02000000)) {
    }
    if (unshare(CLONE_NEWUTS)) {
    }
    if (unshare(CLONE_SYSVSEM)) {
    }
    typedef struct {
      const char* name;
      const char* value;
    } sysctl_t;
    static const sysctl_t sysctls[] = {
        {"/proc/sys/kernel/shmmax", "16777216"},
        {"/proc/sys/kernel/shmall", "536870912"},
        {"/proc/sys/kernel/shmmni", "1024"},
        {"/proc/sys/kernel/msgmax", "8192"},
        {"/proc/sys/kernel/msgmni", "1024"},
        {"/proc/sys/kernel/msgmnb", "1024"},
        {"/proc/sys/kernel/sem", "1024 1048576 500 1024"},
    };
    unsigned i;
    for (i = 0; i < sizeof(sysctls) / sizeof(sysctls[0]); i++)
      write_file(sysctls[i].name, sysctls[i].value);
  }
  
  int wait_for_loop(int pid)
  {
    if (pid < 0)
      exit(1);
    int status = 0;
    while (waitpid(-1, &status, __WALL) != pid) {
    }
    return WEXITSTATUS(status);
  }
  
  static void drop_caps(void)
  {
    struct __user_cap_header_struct cap_hdr = {};
    struct __user_cap_data_struct cap_data[2] = {};
    cap_hdr.version = _LINUX_CAPABILITY_VERSION_3;
    cap_hdr.pid = getpid();
    if (syscall(SYS_capget, &cap_hdr, &cap_data))
      exit(1);
    const int drop = (1 << CAP_SYS_PTRACE) | (1 << CAP_SYS_NICE);
    cap_data[0].effective &= ~drop;
    cap_data[0].permitted &= ~drop;
    cap_data[0].inheritable &= ~drop;
    if (syscall(SYS_capset, &cap_hdr, &cap_data))
      exit(1);
  }
  
  static int do_sandbox_none(void)
  {
    if (unshare(CLONE_NEWPID)) {
    }
    int pid = fork();
    if (pid != 0)
      return wait_for_loop(pid);
    setup_common();
    sandbox_common();
    drop_caps();
    if (unshare(CLONE_NEWNET)) {
    }
    loop();
    exit(1);
  }
  
  uint64_t r[1] = {0xffffffffffffffff};
  
  void loop(void)
  {
    intptr_t res = 0;
    res = syscall(__NR_socket, 0x10ul, 3ul, 0xcul);
    if (res != -1)
      r[0] = res;
    *(uint64_t*)0x20000300 = 0;
    *(uint32_t*)0x20000308 = 0;
    *(uint64_t*)0x20000310 = 0x200002c0;
    *(uint64_t*)0x200002c0 = 0x200004c0;
    *(uint32_t*)0x200004c0 = 0x7c;
    *(uint8_t*)0x200004c4 = 2;
    *(uint8_t*)0x200004c5 = 6;
    *(uint16_t*)0x200004c6 = 1;
    *(uint32_t*)0x200004c8 = 0;
    *(uint32_t*)0x200004cc = 0;
    *(uint8_t*)0x200004d0 = 0;
    *(uint8_t*)0x200004d1 = 0;
    *(uint16_t*)0x200004d2 = htobe16(0);
    *(uint16_t*)0x200004d4 = 0xe;
    *(uint16_t*)0x200004d6 = 3;
    memcpy((void*)0x200004d8, "bitmap:ip\000", 10);
    *(uint16_t*)0x200004e4 = 9;
    *(uint16_t*)0x200004e6 = 2;
    memcpy((void*)0x200004e8, "syz1\000", 5);
    *(uint16_t*)0x200004f0 = 0x34;
    STORE_BY_BITMASK(uint16_t, , 0x200004f2, 7, 0, 14);
    STORE_BY_BITMASK(uint16_t, , 0x200004f3, 0, 6, 1);
    STORE_BY_BITMASK(uint16_t, , 0x200004f3, 1, 7, 1);
    *(uint16_t*)0x200004f4 = 0xc;
    STORE_BY_BITMASK(uint16_t, , 0x200004f6, 1, 0, 14);
    STORE_BY_BITMASK(uint16_t, , 0x200004f7, 0, 6, 1);
    STORE_BY_BITMASK(uint16_t, , 0x200004f7, 1, 7, 1);
    *(uint16_t*)0x200004f8 = 8;
    STORE_BY_BITMASK(uint16_t, , 0x200004fa, 1, 0, 14);
    STORE_BY_BITMASK(uint16_t, , 0x200004fb, 1, 6, 1);
    STORE_BY_BITMASK(uint16_t, , 0x200004fb, 0, 7, 1);
    *(uint32_t*)0x200004fc = htobe32(0x9effffff);
    *(uint16_t*)0x20000500 = 0xc;
    STORE_BY_BITMASK(uint16_t, , 0x20000502, 2, 0, 14);
    STORE_BY_BITMASK(uint16_t, , 0x20000503, 0, 6, 1);
    STORE_BY_BITMASK(uint16_t, , 0x20000503, 1, 7, 1);
    *(uint16_t*)0x20000504 = 8;
    STORE_BY_BITMASK(uint16_t, , 0x20000506, 1, 0, 14);
    STORE_BY_BITMASK(uint16_t, , 0x20000507, 1, 6, 1);
    STORE_BY_BITMASK(uint16_t, , 0x20000507, 0, 7, 1);
    *(uint8_t*)0x20000508 = 0xac;
    *(uint8_t*)0x20000509 = 0x1e;
    *(uint8_t*)0x2000050a = 0;
    *(uint8_t*)0x2000050b = 1;
    *(uint16_t*)0x2000050c = 5;
    *(uint16_t*)0x2000050e = 0x14;
    *(uint8_t*)0x20000510 = 5;
    *(uint16_t*)0x20000514 = 5;
    *(uint16_t*)0x20000516 = 0x14;
    *(uint8_t*)0x20000518 = 3;
    *(uint16_t*)0x2000051c = 8;
    STORE_BY_BITMASK(uint16_t, , 0x2000051e, 8, 0, 14);
    STORE_BY_BITMASK(uint16_t, , 0x2000051f, 1, 6, 1);
    STORE_BY_BITMASK(uint16_t, , 0x2000051f, 0, 7, 1);
    *(uint32_t*)0x20000520 = htobe32(0x18);
    *(uint16_t*)0x20000524 = 5;
    *(uint16_t*)0x20000526 = 1;
    *(uint8_t*)0x20000528 = 7;
    *(uint16_t*)0x2000052c = 5;
    *(uint16_t*)0x2000052e = 4;
    *(uint8_t*)0x20000530 = 0;
    *(uint16_t*)0x20000534 = 5;
    *(uint16_t*)0x20000536 = 5;
    *(uint8_t*)0x20000538 = 2;
    *(uint64_t*)0x200002c8 = 0x7c;
    *(uint64_t*)0x20000318 = 1;
    *(uint64_t*)0x20000320 = 0;
    *(uint64_t*)0x20000328 = 0;
    *(uint32_t*)0x20000330 = 0x40000;
    syscall(__NR_sendmsg, r[0], 0x20000300ul, 0ul);
  }
  int main(void)
  {
    syscall(__NR_mmap, 0x20000000ul, 0x1000000ul, 3ul, 0x32ul, -1, 0);
    do_sandbox_none();
    return 0;
  }
  