blob: 8cdd91adb1b2f1e3947eea3f869ba0e905150036 [file] [log] [blame]
// KASAN: slab-out-of-bounds Read in xfrm_hash_rebuild
// https://syzkaller.appspot.com/bug?id=1c11a638b7d27e871aa297f3b4d5fd5bc90f0cb4
// status:fixed
// 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>
long r[3];
void loop()
{
memset(r, -1, sizeof(r));
syscall(__NR_mmap, 0x20000000, 0xfff000, 3, 0x32, -1, 0);
r[0] = syscall(__NR_socket, 0xa, 2, 0);
*(uint8_t*)0x201e8000 = 0xac;
*(uint8_t*)0x201e8001 = 0x14;
*(uint8_t*)0x201e8002 = 0;
*(uint8_t*)0x201e8003 = 0xbb;
*(uint8_t*)0x201e8010 = 0xfe;
*(uint8_t*)0x201e8011 = 0x80;
*(uint8_t*)0x201e8012 = 0;
*(uint8_t*)0x201e8013 = 0;
*(uint8_t*)0x201e8014 = 0;
*(uint8_t*)0x201e8015 = 0;
*(uint8_t*)0x201e8016 = 0;
*(uint8_t*)0x201e8017 = 0;
*(uint8_t*)0x201e8018 = 0;
*(uint8_t*)0x201e8019 = 0;
*(uint8_t*)0x201e801a = 0;
*(uint8_t*)0x201e801b = 0;
*(uint8_t*)0x201e801c = 0;
*(uint8_t*)0x201e801d = 0;
*(uint8_t*)0x201e801e = 0;
*(uint8_t*)0x201e801f = 0xbb;
*(uint16_t*)0x201e8020 = htobe16(0x4e20);
*(uint16_t*)0x201e8022 = 0;
*(uint16_t*)0x201e8024 = htobe16(0x4e20);
*(uint16_t*)0x201e8026 = 0;
*(uint16_t*)0x201e8028 = 2;
*(uint8_t*)0x201e802a = 0;
*(uint8_t*)0x201e802b = 0;
*(uint8_t*)0x201e802c = 0;
*(uint32_t*)0x201e8030 = 0;
*(uint32_t*)0x201e8034 = 0;
*(uint64_t*)0x201e8038 = 0;
*(uint64_t*)0x201e8040 = 0;
*(uint64_t*)0x201e8048 = 0;
*(uint64_t*)0x201e8050 = 0;
*(uint64_t*)0x201e8058 = 0;
*(uint64_t*)0x201e8060 = 0;
*(uint64_t*)0x201e8068 = 0;
*(uint64_t*)0x201e8070 = 0;
*(uint64_t*)0x201e8078 = 0;
*(uint64_t*)0x201e8080 = 0;
*(uint64_t*)0x201e8088 = 0;
*(uint64_t*)0x201e8090 = 0;
*(uint32_t*)0x201e8098 = 0;
*(uint32_t*)0x201e809c = 0x6e6bb0;
*(uint8_t*)0x201e80a0 = 0;
*(uint8_t*)0x201e80a1 = 0;
*(uint8_t*)0x201e80a2 = 0;
*(uint8_t*)0x201e80a3 = 0;
*(uint8_t*)0x201e80a8 = 0xac;
*(uint8_t*)0x201e80a9 = 0x14;
*(uint8_t*)0x201e80aa = 0;
*(uint8_t*)0x201e80ab = 0xaa;
*(uint32_t*)0x201e80b8 = htobe32(0x4d2);
*(uint8_t*)0x201e80bc = -1;
*(uint16_t*)0x201e80c0 = 0;
*(uint8_t*)0x201e80c4 = 0;
*(uint8_t*)0x201e80c5 = 0;
*(uint8_t*)0x201e80c6 = 0;
*(uint8_t*)0x201e80c7 = 0;
*(uint8_t*)0x201e80c8 = 0;
*(uint8_t*)0x201e80c9 = 0;
*(uint8_t*)0x201e80ca = 0;
*(uint8_t*)0x201e80cb = 0;
*(uint8_t*)0x201e80cc = 0;
*(uint8_t*)0x201e80cd = 0;
*(uint8_t*)0x201e80ce = 0;
*(uint8_t*)0x201e80cf = 0;
*(uint8_t*)0x201e80d0 = 0;
*(uint8_t*)0x201e80d1 = 0;
*(uint8_t*)0x201e80d2 = 0;
*(uint8_t*)0x201e80d3 = 0;
*(uint32_t*)0x201e80d4 = 0x34ff;
*(uint8_t*)0x201e80d8 = 0;
*(uint8_t*)0x201e80d9 = 0;
*(uint8_t*)0x201e80da = 0;
*(uint32_t*)0x201e80dc = 0;
*(uint32_t*)0x201e80e0 = 0;
*(uint32_t*)0x201e80e4 = 0;
syscall(__NR_setsockopt, r[0], 0x29, 0x23, 0x201e8000, 0xe8);
r[1] = syscall(__NR_socket, 0xf, 3, 2);
*(uint32_t*)0x20e8c000 = 0;
syscall(__NR_setsockopt, r[1], 1, 8, 0x20e8c000, 4);
memcpy((void*)0x20a97ff0,
"\x02\x0b\xaf\x01\x02\x00\x00\x00\x00\x06\x7b\xbc\x8e\x1d\x4b\x48",
16);
syscall(__NR_write, r[1], 0x20a97ff0, 0x10);
memcpy((void*)0x20000ff0,
"\x02\x12\xa1\x25\x02\x00\x00\x00\x09\xe5\x00\x00\x00\x00\x09\x00",
16);
syscall(__NR_write, r[1], 0x20000ff0, 0x10);
r[2] = syscall(__NR_socket, 0x10, 2, 6);
*(uint64_t*)0x20616fc8 = 0x20000000;
*(uint32_t*)0x20616fd0 = 0;
*(uint64_t*)0x20616fd8 = 0x20664000;
*(uint64_t*)0x20616fe0 = 1;
*(uint64_t*)0x20616fe8 = 0x2061e000;
*(uint64_t*)0x20616ff0 = 0;
*(uint32_t*)0x20616ff8 = 0;
*(uint64_t*)0x20664000 = 0x20d9efdf;
*(uint64_t*)0x20664008 = 0x20;
*(uint32_t*)0x20d9efdf = 0x20;
*(uint16_t*)0x20d9efe3 = 0x24;
*(uint16_t*)0x20d9efe5 = 1;
*(uint32_t*)0x20d9efe7 = 0;
*(uint32_t*)0x20d9efeb = 0x25dfdbfb;
memcpy((void*)0x20d9efef,
"\x23\x00\xfb\x06\x0b\x00\x04\x00\x00\x00\x00\x00\xff", 13);
syscall(__NR_sendmsg, r[2], 0x20616fc8, 0);
}
int main()
{
loop();
return 0;
}