aboutsummaryrefslogtreecommitdiffstats
path: root/csource
Commit message (Collapse)AuthorAgeFilesLines
* csource: fix parallel mode to wait for subprocessesDmitry Vyukov2017-02-021-1/+3
| | | | | | Currently it lefts some orphaned children, so that ctrl+C does not kill them. Wait for the children.
* executor: fix undefined setup_tun() function error in c reprosAndrey Konovalov2017-02-011-2/+6
|
* csource: regenerate and reformatDmitry Vyukov2017-02-012-2/+4
|
* executor: fix tun initialization when sandbox != noneAndrey Konovalov2017-01-312-20/+31
|
* sys: improve kvm descriptionDmitry Vyukov2017-01-281-63/+106
| | | | | | Allow fuzzer to change types of segment descriptors. Alter more flags. Allow fuzzer to do a random vmwrite.
* csource, syz-gce: regenerate and reformatDmitry Vyukov2017-01-271-2/+2
|
* executor: protect against memory corruptions betterDmitry Vyukov2017-01-251-2/+8
| | | | | | | | | | | Fuzzer has figured out how to corrupt input/output shmem regions abusing the text memcpy in syz_kvm_setup_cpu. It guessed a negative text_size value that causes the memcpy to overwrite shmem regions. Protect better against such cases: 1. Make text_size unsigned (there is already a check that it is less than 1000). 2. Map input region as readable only, we don't write to it. 3. Add address sanity check to segv_handler, if we see that we are writing into executable data, it's better to crash instantly.
* executor: change tun subnet to 172.20.*Andrey Konovalov2017-01-231-3/+3
|
* csource: use 0x%x format for printing bitfield addr and argAndrey Konovalov2017-01-231-1/+1
|
* all: spot optimizationsDmitry Vyukov2017-01-201-1/+4
| | | | | | | | | | | | | A bunch of spot optmizations after cpu/memory profiling: 1. Optimize hot-path coverage comparison in fuzzer. 2. Don't allocate and copy serialized program, serialize directly into shmem. 3. Reduce allocations during parsing of output shmem (encoding/binary sucks). 4. Don't allocate and copy coverage arrays, refer directly to the shmem region (we are not going to mutate them). 5. Don't validate programs outside of tests, validation allocates tons of memory. 6. Replace the choose primitive with simpler switches. Choose allocates fullload of memory (for int, func, and everything the func refers). 7. Other minor optimizations.
* executor: fix warning regarding type cast in STORE_BY_BITMASKAndrey Konovalov2017-01-201-1/+1
|
* csource: fix STORE_BY_BITMASK in prog2cAndrey Konovalov2017-01-201-1/+1
|
* executor: fix copyin of valuesDmitry Vyukov2017-01-171-11/+13
| | | | | | Currently non-bitfield values are copied incorrectly. Probably all turned into zeros or something. Fix that. Add test.
* csource: regenerateDmitry Vyukov2017-01-171-0/+12
|
* prog: add bitfields to templatesAndrey Konovalov2017-01-171-1/+10
| | | | | | Now it's possible to use `int32:18` to denote a bitfield of size 18 as a struct field. This fixes #72.
* sys, executor: more kvm improvementsDmitry Vyukov2017-01-123-15/+119
| | | | | | | 1. Basic support for arm64 kvm testing. 2. Fix compiler warnings in x86 kvm code. 3. Test all pseudo syz calls in csource. 4. Fix handling of real code in x86.
* sys: extend kvm supportDmitry Vyukov2017-01-092-1/+836
| | | | | | Add new pseudo syscall syz_kvm_setup_cpu that setups VCPU into interesting states for execution. KVM is too difficult to setup otherwise. Lots of improvements possible, but this is a starting point.
* executor: use NONFAILING strcpy in syz_open_devDmitry Vyukov2017-01-091-1/+1
| | | | The source is fuzzer provided memory, it can be non-addressable.
* csource: compile with -WerrorDmitry Vyukov2017-01-093-10/+10
| | | | | | Check for compiler warnings during compilation. Don't require -std=c99. Fix existing compiler warnings.
* csource: fix fork bombDmitry Vyukov2017-01-091-0/+1
|
* csource: remove more predefined defines from generated sourceDmitry Vyukov2017-01-091-14/+21
|
* executor: don't fail on ENOMEMDmitry Vyukov2016-12-161-1/+1
|
* executor: handle exit failuresDmitry Vyukov2016-12-081-9/+25
| | | | See the added comment for explanation.
* executor: add struct to cap structsDmitry Vyukov2016-12-071-7/+9
| | | | | Otherwise it does not compile as C. Also regenerate csource/common.go (it misses the MAX_PIDS change).
* executor: don't try to open tun if it's not enabledAndrey Konovalov2016-12-022-6/+16
|
* csourse: emit remove_dir only when neededAndrey Konovalov2016-11-292-2/+4
|
* csourse: fix emitting syz_* syscalls in c reproducerAndrey Konovalov2016-11-291-2/+12
|
* executor: emit ethernet trafficAndrey Konovalov2016-11-292-15/+136
|
* csource: don't emit syz_ syscalls is they are not usedDmitry Vyukov2016-11-262-9/+28
|
* sys: add proc type to denote per proccess integersAndrey Konovalov2016-11-251-1/+1
|
* executor: fix sandbox=setuidDmitry Vyukov2016-11-221-0/+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
|
* vm: add ability to interrupt commandsDmitry Vyukov2016-11-191-0/+1
| | | | This is required for crash reproduction in manager.
* repro: factor out of syz-repro toolDmitry Vyukov2016-11-193-30/+483
| | | | | | | | 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
* csource: make collide mode more randomDmitry Vyukov2016-08-281-4/+5
| | | | Update #59
* csource: teach how to execute pseudo syz_ syscallsDmitry Vyukov2016-08-282-13/+165
| | | | Update #59
* executor, csource: share some common code between executor and csourceDmitry Vyukov2016-08-281-33/+7
|
* csource: support nonfailing argument copyin/copyoutDmitry Vyukov2016-08-281-8/+36
| | | | Update #59
* csource: use dynamic libraries if static are not supportedDmitry Vyukov2016-02-191-1/+5
| | | | Fixes #20
* csource: format source with clang-formatDmitry Vyukov2016-01-151-0/+31
|
* sysgen: pull in syscall numbers from kernel headersDmitry Vyukov2015-12-241-3/+2
| | | | | | | | Syscall numbers for different architectures are now pulled in from kernel headers. This solves 2 problems: - we don't need to hardcode numbers for new syscalls (that don't present in typical distro headers) - we have correct number for different archs (previously hardcoded numbers were for x86_64) This also makes syscall numbers available for Go code, which can be useful.
* prog: remove padding checkingDmitry Vyukov2015-12-232-7/+2
| | | | | So far it has found only false positives. Let's leave this to KMSAN.
* fileutil: new packageDmitry Vyukov2015-12-232-16/+2
| | | | Move some file utilities into a separate package.
* csource: reformatDmitry Vyukov2015-12-231-14/+13
|
* csource: new packageDmitry Vyukov2015-12-232-0/+286
Move C source generation into a separate package. Prog is too bloated already.