blob: ab5cc8b221cecd1fc3066d8e9a738264943e5003 [file] [log] [blame]
// KASAN: slab-out-of-bounds Read in ip6_xmit (3)
// https://syzkaller.appspot.com/bug?id=74f4baf145987a4f8f09f031a771a345dbbec229
// 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>
#ifndef __NR_bpf
#define __NR_bpf 321
#endif
uint64_t r[2] = {0xffffffffffffffff, 0xffffffffffffffff};
void loop()
{
long res = 0;
syscall(__NR_socketpair, 0, 0, 0, 0x20000140);
res = syscall(__NR_socket, 0xa, 1, 0);
if (res != -1)
r[0] = res;
*(uint32_t*)0x20000280 = 0x12;
*(uint32_t*)0x20000284 = 2;
*(uint32_t*)0x20000288 = 4;
*(uint32_t*)0x2000028c = 1;
*(uint32_t*)0x20000290 = 0;
*(uint32_t*)0x20000294 = 1;
*(uint32_t*)0x20000298 = 0;
*(uint8_t*)0x2000029c = 0;
*(uint8_t*)0x2000029d = 0;
*(uint8_t*)0x2000029e = 0;
*(uint8_t*)0x2000029f = 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;
res = syscall(__NR_bpf, 0, 0x20000280, 0x2c);
if (res != -1)
r[1] = res;
*(uint32_t*)0x20000180 = r[1];
*(uint64_t*)0x20000188 = 0x20000000;
*(uint64_t*)0x20000190 = 0x20000140;
*(uint64_t*)0x20000198 = 0;
syscall(__NR_bpf, 2, 0x20000180, 0x20);
*(uint64_t*)0x20000580 = 0x20000080;
*(uint16_t*)0x20000080 = 2;
*(uint16_t*)0x20000082 = htobe16(0x4e22);
*(uint8_t*)0x20000084 = 0xac;
*(uint8_t*)0x20000085 = 0x14;
*(uint8_t*)0x20000086 = 0x14;
*(uint8_t*)0x20000087 = 0xaa;
*(uint8_t*)0x20000088 = 0;
*(uint8_t*)0x20000089 = 0;
*(uint8_t*)0x2000008a = 0;
*(uint8_t*)0x2000008b = 0;
*(uint8_t*)0x2000008c = 0;
*(uint8_t*)0x2000008d = 0;
*(uint8_t*)0x2000008e = 0;
*(uint8_t*)0x2000008f = 0;
*(uint32_t*)0x20000588 = 0x80;
*(uint64_t*)0x20000590 = 0x200002c0;
*(uint64_t*)0x200002c0 = 0x20000000;
*(uint64_t*)0x200002c8 = 0;
*(uint64_t*)0x20000598 = 1;
*(uint64_t*)0x200005a0 = 0x20000300;
*(uint64_t*)0x20000300 = 0x10;
*(uint32_t*)0x20000308 = 0x1bf;
*(uint32_t*)0x2000030c = 3;
*(uint64_t*)0x20000310 = 0x10;
*(uint32_t*)0x20000318 = 1;
*(uint32_t*)0x2000031c = 0;
*(uint64_t*)0x20000320 = 0x10;
*(uint32_t*)0x20000328 = 0x19f;
*(uint32_t*)0x2000032c = 9;
*(uint64_t*)0x20000330 = 0x10;
*(uint32_t*)0x20000338 = 0x10b;
*(uint32_t*)0x2000033c = 1;
*(uint64_t*)0x20000340 = 0x10;
*(uint32_t*)0x20000348 = 0;
*(uint32_t*)0x2000034c = 9;
*(uint64_t*)0x200005a8 = 0x50;
*(uint32_t*)0x200005b0 = 1;
syscall(__NR_sendmsg, r[0], 0x20000580, 0x20000000);
}
int main()
{
syscall(__NR_mmap, 0x20000000, 0x1000000, 3, 0x32, -1, 0);
loop();
return 0;
}