aboutsummaryrefslogtreecommitdiffstats
path: root/executor
Commit message (Collapse)AuthorAgeFilesLines
* csource: don't emit syz_ syscalls is they are not usedDmitry Vyukov2016-11-261-3/+26
|
* executor: fix sandbox=setuidDmitry Vyukov2016-11-221-2/+4
| | | | | Need to chmod(0777) the work dir before we do setuid(nobody). Otherwise nobody user won't have rights to use the temp dir.
* csourceL add missing include and defineDmitry Vyukov2016-11-221-0/+2
|
* repro: factor out of syz-repro toolDmitry Vyukov2016-11-192-308/+368
| | | | | | | | Factor out repro logic from syz-repro tool, so that it can be used in syz-manager. Also, support sandboxes in code generated by csoure. This is required to reproduce crashes that require e.g. namespace sandbox.
* sys, prog: add tests for description parsing and serializationDmitry Vyukov2016-09-281-0/+2
| | | | | | | | | | Add sys/test.txt file with description of syscalls for tests. These descriptions can be used to ensure that we can parse everything we clain we can parse. Use these descriptions to write several tests for exec serialization (one test shows that alignment handling is currently incorrect). These test descriptions can also be used to write e.g. mutation tests. Update #78
* sys: remove autogenerated filesDmitry Vyukov2016-09-021-3350/+0
| | | | | | | | They were necessary when they were the source of constant values extracted from kernel code (hard to do). Now constants are checked-in separately, and these large files can be easily regenerated with 'make generate'. Now they are only a source of large uninteresting diffs in commits. Remove them.
* csource: teach how to execute pseudo syz_ syscallsDmitry Vyukov2016-08-282-107/+115
| | | | Update #59
* executor, csource: share some common code between executor and csourceDmitry Vyukov2016-08-283-3365/+3377
|
* overhaul syscall description generation processDmitry Vyukov2016-08-261-4121/+3008
| | | | | | | | | | | | | | | | | | | | | | This splits generation process into two phases: 1. Extract values of constants from linux kernel sources. 2. Generate Go code. Constant values are checked in. The advantage is that the second phase is now completely independent from linux source files, kernel version, presence of headers for particular drivers, etc. This allows to change what Go code we generate any time without access to all kernel headers (which in future won't be limited to only upstream headers). Constant extraction process does require proper kernel sources, but this can be done only once by the person who added the driver and has access to the required sources. Then the constant values are checked in for others to use. Consant extraction process is per-file/per-arch. That is, if I am adding a driver that is not present upstream and that works only on a single arch, I will check in constants only for that driver and for that arch.
* executor: add experimental mode to skip paging faultsDmitry Vyukov2016-08-221-27/+65
| | | | | | | Ignore SIGSEGV/SIGBUS during copyin/copyout of arguments. The memory may not be addressable. The ignoring allows to pass partially-addressable input data to kernel. It's unclear if it's a good idea or not yet.
* executor: revive setuid sandboxDmitry Vyukov2016-07-011-15/+76
| | | | | | | | | | | | | | The new namespace-based sanboxing is good, but it's not always what one wants (and also requires special kernel configs). Change dropprivs config value to sandbox, which can have different values (currently: none, setuid, namespace). Setuid mode uses setuid(nobody) before fuzzing as before. In future we can add more sandboxing modes or, say, extend -sandbox=setuid to -sandbox=setuid:johndoe to impersonolate into given user.
* executor: add support for 386 arch (COMPAT syscalls)Dmitry Vyukov2016-06-302-23/+1136
| | | | | This is not fully working now: e.g. prog and sys packages assume that pointer size is 8. But at least it compiles and works.
* executor: don't consider failures to remove temp dirs as crashesDmitry Vyukov2016-06-281-6/+6
| | | | | | | There is a number of known, low-frequency reasons for failures in remove_dir. Make the failures non-fatal. Fixes #45
* sys: update generated filesDmitry Vyukov2016-06-131-0/+207
|
* executor: prevent test processes from ptracing parent processesDmitry Vyukov2016-03-101-0/+17
|
* executor: ignore NOFILE errors during cleanupDmitry Vyukov2016-03-101-1/+8
| | | | This is a common source of false positives.
* executor: ignore the case when test process kills loop processDmitry Vyukov2016-03-101-1/+2
| | | | This lead to lots of false positives.
* executor: make loop killing non-fatalDmitry Vyukov2016-03-101-1/+4
|
* sys: fix /dev/snd/pcm descriptionDmitry Vyukov2016-02-051-3/+6
|
* ipc: give executor some time to startupDmitry Vyukov2016-01-271-1/+5
| | | | | | Namespace-based sandbox can take some time to setup. In particular, lots of parallel executors block on net namespace creation.
* sys: regenerate after tun/random supportDmitry Vyukov2016-01-261-0/+87
|
* sys: open a bunch of new devicesDmitry Vyukov2016-01-262-2/+148
|
* sysgen: use __ppc64__ || __PPC64__ || __powerpc64__ to detect ppcDmitry Vyukov2016-01-251-3/+3
| | | | Different macros are defined by different compilers...
* sys: allow to open all devices as stopgapDmitry Vyukov2016-01-241-11/+23
|
* sys: add basic netlink support for realDmitry Vyukov2016-01-231-0/+48
|
* executor: restore nodropprivs modeDmitry Vyukov2016-01-231-15/+24
|
* sys: use kernel headers instead of host headersDmitry Vyukov2016-01-221-15/+965
| | | | | | | | This solves several problems: - host usually have outdates headers, so previously we need to define missing consts - host may not have some headers at all - generation depends on linux distribution and version - some of the consts cannot be defined at all (e.g. ioctls that use struct arguments)
* executor: new namespace-based sandboxDmitry Vyukov2016-01-221-73/+208
|
* vm/adb: use a more reliable way to reboot devicesDmitry Vyukov2016-01-201-1/+6
|
* executor: start moving sandboxing code into executorDmitry Vyukov2016-01-201-0/+14
|
* executor: adopt for new kcovDmitry Vyukov2016-01-191-14/+16
| | | | Now kcov exposes only uintptr-sized PCs.
* sys: describe more dri syscallsDmitry Vyukov2016-01-162-0/+98
|
* sys: support /dev/input/event ioctlsDmitry Vyukov2016-01-151-0/+72
|
* executor: reportat after clang-format bug fixDmitry Vyukov2016-01-151-30/+12
| | | | http://reviews.llvm.org/rL257763
* sys: support /dev/input/{mouse,mice,event}Dmitry Vyukov2016-01-131-0/+2
|
* executor: don't create all threads when spot a root syscallDmitry Vyukov2016-01-131-1/+1
|
* executor: don't print all waitpid debug messagesDmitry Vyukov2016-01-131-2/+5
|
* sys: introduce a generic syz_open_dev helper syscallDmitry Vyukov2016-01-132-44/+38
|
* sys: add support for /dev/snd/controlDmitry Vyukov2016-01-132-1/+68
|
* sys: add support for /dev/snd/timerDmitry Vyukov2016-01-121-0/+30
|
* sys: support /dev/snd/seqDmitry Vyukov2016-01-112-0/+72
|
* executor: use mknodat instead of mknod (the latter is not implemented on ↵Dmitry Vyukov2016-01-111-1/+1
| | | | android)
* sys: add kvm supportDmitry Vyukov2016-01-082-17/+203
|
* executor: fix some bugs found by clangDmitry Vyukov2015-12-311-1/+4
|
* sys: add sctp supportDmitry Vyukov2015-12-301-12/+96
|
* sys: add union typeDmitry Vyukov2015-12-291-2/+2
|
* sys: support for AF_UNIX socketsDmitry Vyukov2015-12-281-2/+42
|
* sys: move more subsystems into separate filesDmitry Vyukov2015-12-281-394/+394
|
* sys: split syscall description into several filesDmitry Vyukov2015-12-281-34/+34
|
* host: detect unsupported syscallsDmitry Vyukov2015-12-271-0/+4
| | | | | | Also detect transitively unsupported syscalls, that is, syscalls for which all syscalls that can create input arguments are disabled.