aboutsummaryrefslogtreecommitdiffstats
path: root/executor
Commit message (Collapse)AuthorAgeFilesLines
...
* all: basic freebsd supportDmitry Vyukov2017-10-021-0/+12
| | | | For now we just make Go part build for freebsd.
* executor: support fragmentation in syz_emit_ethernetDmitry Vyukov2017-10-022-24/+84
| | | | | | A recent linux commit "tun: enable napi_gro_frags() for TUN/TAP driver" added support for fragmentation when emitting packets via tun. Support this feature in syz_emit_ethernet.
* sys/fuchsia: add more descriptionsDmitry Vyukov2017-10-021-4/+56
|
* sys/windows: add more descriptionsDmitry Vyukov2017-09-271-2/+2954
|
* executor: automatically infer base of root vmarDmitry Vyukov2017-09-271-6/+10
|
* executor: fix execution of windows syscallsDmitry Vyukov2017-09-273-7/+13
| | | | | First, they must be called with stdcall convention. Second, wrap them in __try/__except because they can crash.
* Makefile: add fuchsia supportDmitry Vyukov2017-09-251-0/+1
|
* executor, sys/windows: initial windows supportDmitry Vyukov2017-09-2512-196/+514
|
* sys/fuchsia: describe more syscallsDmitry Vyukov2017-09-252-8/+188
|
* sys/syz-extract: support fuchsiaDmitry Vyukov2017-09-251-2/+2
|
* all: more assorted fuchsia supportDmitry Vyukov2017-09-229-2112/+2370
|
* all: initial support for fuchsiaDmitry Vyukov2017-09-207-7/+40
| | | | | | Nothing works, but builds. Update #191
* executor: split source per-OSDmitry Vyukov2017-09-202-0/+9
| | | | Update #191
* executor: remove unused headersDmitry Vyukov2017-09-201-2/+0
|
* sys/linux: improve user_desc descriptionDmitry Vyukov2017-09-201-3/+3
|
* pkg/compiler: don't genererate missing syscallsDmitry Vyukov2017-09-151-281/+5
| | | | | | | | We used to generate them only because manager had no idea what arch it is testing. So syscalls numbers had to match between all arches. This is not needed anymore. Also don't generate unreferenced structs/resources.
* syz-manager, syz-fuzzer, executor: ensure that binaries are consistentDmitry Vyukov2017-09-152-0/+19
| | | | | | | Check that manager/fuzzer/executor are build on the same git revision, use the same syscall descriptions and the same target arch. Update #336
* pkg/csource: support archs other than x86_64Dmitry Vyukov2017-09-151-2/+3
|
* sys: consolidate info about various targetsDmitry Vyukov2017-09-151-2988/+2988
| | | | | | | | | | | | Info about targets (like C arch/CFLAGS) is required in multiple places: extract.sh syz-extract syz-sysgen csource vm/qemu ... Consolidate it in one place and use that in syz-sysgen.
* executor: fix 32-bit modeDmitry Vyukov2017-09-051-5/+1
| | | | | The correct type is kernel long size, not user-space long size. We approximate it with uint64.
* sys: improve timespec/timeval generationDmitry Vyukov2017-09-051-0/+2
|
* pkg/compiler: detect resources without ctorsDmitry Vyukov2017-09-041-0/+5
| | | | Fixes #217
* sys: improve bpf descriptionsDmitry Vyukov2017-09-021-0/+35
|
* pkg/compiler: restore generation of unsupported syscallsDmitry Vyukov2017-09-021-0/+276
| | | | | | Unfortunately this is sitll needed, see the added comment. Update #191
* sys: add AF_PACKET sockets descriptionAndrey Konovalov2017-09-011-0/+99
|
* executor, ipc: modify the IO between KCOV<->executor<->fuzzerVictor Chibotaru2017-08-301-37/+116
| | | | | Now executor is able to read comparisons data from KCOV and write them to fuzzer.
* executor, fuzzer: change the way Syzkaller opens the KCOV deviceVictor Chibotaru2017-08-301-18/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | We have implemented a new version of KCOV, which is able to dump comparison operands' data, obtained from Clang's instrumentation hooks __sanitizer_cov_trace_cmp[1248], __sanitizer_cov_trace_const_cmp[1248] and __sanitizer_cov_trace_switch. Current KCOV implementation can work in two modes: "Dump only the PCs" or "Dump only comparisons' data". Mode selection is done by the following series of calls: fd = open(KCOV_PATH, ...); // works as previous ioctl(fd, KCOV_INIT_TRACE, ...); // works as previous mmap(fd, ...); // works as previous ioctl(fd, KCOV_ENABLE, mode); // mode = KCOV_MODE_TRACE_CMP or mode = KCOV_MODE_TRACE_PC Note that this new interface is backwards compatible, as old KCOV devices will just return -EINVAL for the last ioctl. This way we can distinguish if the KCOV device is able to dump the comparisons. Main changes in this commit: 1. Fuzzer now checks at startup which type (new/old) of KCOV device is running. 2. Executor now receives an additional flag, which indicates if executor should read the comparisons data from KCOV. The flag works on per-call basis, so executor can collect PCs or Comps for each individual syscall.
* pkg/compiler: move more const-processing code to compilerDmitry Vyukov2017-08-271-519/+555
|
* pkg/compiler, sys/syz-sysgen: move const handling to pkg/compilerDmitry Vyukov2017-08-271-275/+0
| | | | Now pkg/compiler deals with consts.
* executor: split a too long lineDmitry Vyukov2017-08-241-1/+3
|
* all: support i386 archDmitry Vyukov2017-08-192-6/+1537
| | | | Update #191
* sys: support arm archDmitry Vyukov2017-08-191-0/+1521
| | | | | | | Not tested, but const extraction and build works. Update #324 Update #191
* sys: describe clone/execve callsDmitry Vyukov2017-08-121-0/+9
| | | | | Update #211 Update #310
* sys: describe chroot/getcwd/chdir/fchdirDmitry Vyukov2017-08-121-0/+12
| | | | Update #211
* executor: sandbox with RLIMIT_MEMLOCKDmitry Vyukov2017-08-081-0/+2
| | | | | | | Locking memory is a reasonably legitimate local DoS vector. E.g. bpf maps allow allocation of large chunks of kernel memory without RLIMIT_MEMLOCK, which leads to hangups. Set RLIMIT_MEMLOCK=8MB in executor.
* prog: fix encoding for exec of result argsAndrey Konovalov2017-08-011-0/+6
| | | | | | ResultArg might have const value. Also add a test.
* prog: return error instead of panic when parsingAndrey Konovalov2017-07-241-0/+3
|
* pkg/csource: make all usleeps randomAndrey Konovalov2017-07-241-2/+0
| | | | | | We can't know the exact values of those sleeps in advance, they can be different for different bugs. Making them random increases the chance that the C repro executes with the right timings at some point.
* prog: allow recursion for optional pointersAndrey Konovalov2017-07-191-0/+9
| | | | | | | | When syzkaller generates arg that uses a few structs that reference each other via pointers, it can go into infinite recursion and crash. Fix this by forcing pointer args to be null when the depth of recursion reaches 3 for some struct.
* Makefile: actually cross-compile during presubmitDmitry Vyukov2017-06-261-0/+7
|
* Port console to Darwin (#253)Zach Riggle2017-06-261-0/+2
| | | | | | | | | | | | * Port console to Darwin * Get syz-executor to build correctly * Do not export unix and syscall constants * Add presubmit test * Add myself to contributors
* sys: add ETHTOOL ioctl in socket.txtJB Cayrou2017-06-191-0/+3
| | | | | | Add ioctl$sock_SIOCETHTOOL and ETHTOOL structures defined in uapi/linux/ethtool.h http://elixir.free-electrons.com/linux/latest/source/include/uapi/linux/ethtool.h
* sys: use consistent icmp socket syscall namesAndrey Konovalov2017-06-141-36/+30
|
* executor: handle EACCES errno when opening /dev/kvm in testDmitry Vyukov2017-06-141-1/+1
|
* executor: fix compiler warnings in testDmitry Vyukov2017-06-141-21/+24
|
* executor: fix csum testDmitry Vyukov2017-06-141-1/+1
|
* makefile: list generated packagesAndrey Konovalov2017-06-141-1/+1
|
* executor: fix clang-tidy warningsDmitry Vyukov2017-06-132-18/+18
| | | | | A single check is enabled for now (misc-definitions-in-headers). But it's always fixable and found 2 bugs in csource.
* sys: check in generated filesDmitry Vyukov2017-06-131-0/+4542
| | | | | | | | | | | | | | | | | | We used to have all generated files checked in. Later we removed them (now users are supposed to run make to generate them). This causes several problems: - go get does not work as it tries to build everything straight away (go get -d works, but users are confused) - users don't run make and complain that build is broken - users don't re-run make after updates and complain that build is broken - hard to integrate into other build system (even if they support building Go, they don't support running sysgen out-of-the-box) Fixes #216
* Merge pull request #223 from xairy/up-makedev-fixAndrey Konovalov2017-06-131-0/+1
|\ | | | | executor: add sys/sysmacros.h include for makedev in newer gcc