1608 Commits

Author SHA1 Message Date
Dmitry Vyukov
9f9ae3fcc3 tools/syz-upgrade: helper tool for corpus format upgrades 2015-12-28 12:49:19 +01:00
Dmitry Vyukov
7aee64145f host: detect more unsupported syscalls 2015-12-28 10:45:30 +01:00
Dmitry Vyukov
4d3db6d4c8 host: detect unsupported syscalls
Also detect transitively unsupported syscalls,
that is, syscalls for which all syscalls that can create
input arguments are disabled.
2015-12-27 12:20:00 +01:00
Dmitry Vyukov
524a2ae38f sysgen: fix syscall number assignment for syzkalls 2015-12-24 21:27:21 +01:00
Dmitry Vyukov
a9a7744776 executor: get rid of sigtimedwait
Wait with spin loop instead.
See the comment for explanation.
2015-12-24 20:29:48 +01:00
Dmitry Vyukov
293e915415 vm: fix crash message extraction regexp
First, "cut here" is not interesting as it always follows
by a more descriptive message.
Unreferenced object is interesting.
Also, strip \r at the end.
Add a test.
2015-12-24 19:55:19 +01:00
Dmitry Vyukov
d9b493f203 executor: don't use WUNTRACED in wait
WUNTRACED wait returns when child has stopped.
That's not what we want to wait for.
If it's stopped we need to timeout wait and kill
the stopped child.
2015-12-24 19:14:15 +01:00
Dmitry Vyukov
af4e0c0b7a sysgen: pull in syscall numbers from kernel headers
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.
2015-12-24 19:13:08 +01:00
Dmitry Vyukov
4961230857 syz-manager: filter out programs with disabled syscalls from corpus
Fixes #9
2015-12-24 12:21:01 +01:00
Dmitry Vyukov
80d60f7305 tools/syz-repro: fix repeat multiplier
For loop already increases multiplier on exit,
so additional incrase is not necessary.
2015-12-24 12:06:15 +01:00
Dmitry Vyukov
05b38edce2 vm/qemu: fix output reading bug
If qemu boot retries several times due to busy tcp port,
it ends up with several output reading goroutines.
That completely messes output.
2015-12-24 12:06:04 +01:00
Dmitry Vyukov
58509c75a2 prog: remove padding checking
So far it has found only false positives.
Let's leave this to KMSAN.
2015-12-23 19:58:15 +01:00
Dmitry Vyukov
0785179903 prog: fix parse test 2015-12-23 19:47:20 +01:00
Dmitry Vyukov
8922bd4029 update documentation 2015-12-23 19:33:12 +01:00
Dmitry Vyukov
d4180ca5c7 tools/syz-repro: add reproduction tool 2015-12-23 19:19:45 +01:00
Dmitry Vyukov
546347d931 all: reformat 2015-12-23 19:18:58 +01:00
Dmitry Vyukov
1c801e8512 prog: factor out execution log parsing functionality
It will be needed to reproduction tool.
2015-12-23 19:18:13 +01:00
Dmitry Vyukov
2eb388c0f8 vm: improve VM interface
Current interface is suitable only for running syz-fuzzer.
Make the interface more generic (boot, copy file, run an arbitrary command).
This allows to build other tools on top of vm package
(e.g. reproducer creation).
2015-12-23 19:12:45 +01:00
Dmitry Vyukov
5c0a662198 sys: fix padding insertion
Padding was not inserted into indirect structs.
2015-12-23 19:10:41 +01:00
Dmitry Vyukov
7f3186abbb execprog: detect executor-detected bugs 2015-12-23 19:09:48 +01:00
Dmitry Vyukov
47e55508d0 sys: sort new syscalls 2015-12-23 19:09:24 +01:00
Dmitry Vyukov
b4e2d91732 sys: expose new syscall numbers programmatically
This will be required for reproduction tool.
2015-12-23 19:05:15 +01:00
Dmitry Vyukov
1f580dac3d fileutil: new package
Move some file utilities into a separate package.
2015-12-23 13:59:29 +01:00
Dmitry Vyukov
2fa51b4807 executor: fix collide mode
Don't wait for every other call.
2015-12-23 13:50:40 +01:00
Dmitry Vyukov
c896644ab8 csource: reformat 2015-12-23 13:50:02 +01:00
Dmitry Vyukov
28571fdc32 prog: glue mmap's together during minimization 2015-12-23 13:47:45 +01:00
Dmitry Vyukov
6af1c1f308 execprog: replace loop flag with repeat
This will be necessary for reproduction tool.
It needs to run a program a fixed number of times
instead of loop infinitely.
2015-12-23 13:39:14 +01:00
Dmitry Vyukov
e253cbc79f csource: new package
Move C source generation into a separate package.
Prog is too bloated already.
2015-12-23 13:38:31 +01:00
Dmitry Vyukov
071ad4e91f sys: fix AT_FDCWD handling
AT_FDCWD is not a flag, it is an fd.
2015-12-23 13:36:13 +01:00
Dmitry Vyukov
def15a423d Merge pull request #8 from daviddrysdale/doc-update
Minor tweaks
2015-12-21 14:41:57 +01:00
David Drysdale
27e09c9145 Add 'all-tools' target to build tools
Also remove leftover mention of 'master'
2015-12-21 13:29:09 +00:00
David Drysdale
be3db30b0b Update docs for rename and removal of master
Updated process structure diagram, fix a few mentions of
old setup in README.
2015-12-21 12:37:04 +00:00
David Drysdale
58359bf421 Add David Drysdale to CONTRIBUTORS 2015-12-21 12:15:03 +00:00
Dmitry Vyukov
bd75706280 add a flag to disable setpgid syscall
It is broken on some of our test systems.
2015-12-17 17:31:11 +01:00
Dmitry Vyukov
bbf4e35323 executor: export syscall execution results
Errno can be used to guide fuzzing, or detect not implemented syscalls.
2015-12-17 17:31:11 +01:00
Dmitry Vyukov
bfc05fb926 manager: fix persistent corpus minimization 2015-12-17 17:31:11 +01:00
Dmitry Vyukov
7b5574e9d7 rpctype: remove master messages 2015-12-17 17:31:11 +01:00
Dmitry Vyukov
f2ec18c03e Update README.md 2015-12-17 16:21:46 +01:00
Dmitry Vyukov
6f03b80329 Update README.md 2015-12-17 16:20:12 +01:00
Dmitry Vyukov
8e7ca7c5ff remove master and naming overhaul
Remove master process entirely, it is not useful in its current form.
We first need to understand what we want from it, and them re-implement it.

Prefix all binaries with syz- to avoid name clashes.
2015-12-17 16:06:33 +01:00
Dmitry Vyukov
06e6726537 sys: fix typos 2015-12-17 14:38:46 +01:00
Dmitry Vyukov
41126671ec manager: allow to run fuzzer under root 2015-12-17 14:38:46 +01:00
Dmitry Vyukov
72742865dd sys: add bluetooth support 2015-12-17 14:38:46 +01:00
Dmitry Vyukov
d665e11e9d move Gate type to ipc package and use it in stress tool
This allows to print what programs stress executes.
2015-12-17 14:38:46 +01:00
Dmitry Vyukov
ce0bb4c05d ipc: fix removal of temp dir if chmod fails 2015-12-17 14:38:46 +01:00
Dmitry Vyukov
3d96383e0e executor: allow to wait for child processes without sigtimedwait
We've hit 2 systems that mishandle sigtimedwait.
2015-12-17 14:38:46 +01:00
Dmitry Vyukov
6f71e5dce1 sys: add PF_NFC support 2015-12-17 14:38:46 +01:00
Dmitry Vyukov
6922b20d36 sys: workaround Go compiler bug
see http://golang.org/issue/13579
2015-12-17 14:38:46 +01:00
Dmitry Vyukov
9980a72713 sys: automatically add padding to structs 2015-12-17 14:38:46 +01:00
Dmitry Vyukov
48d0a3662e tools/stress: minor improvements 2015-12-17 14:38:46 +01:00