aboutsummaryrefslogtreecommitdiffstats
path: root/tools
Commit message (Collapse)AuthorAgeFilesLines
* vm: return Report from MonitorExecutionDmitry Vyukov2017-11-211-7/+3
| | | | | | This allows callers to get access to Report.Corrupted. Better than adding 6-th return value and will allow to pipe other report properties if necessary.
* pkg/report, pkg/repro, syz-manager: name crash attributes consistentlyDmitry Vyukov2017-11-142-5/+5
| | | | | | | | | We currently have several names for crash attributes, which is disturbing. E.g. crash title is called "Title" or "Desc". Name them consistently. Title - single line bug identity. Report - whole crash text. Log - whole fuzzer/kernel output.
* vm: remove needOutput arg for MonitorExecutionDmitry Vyukov2017-11-141-1/+1
| | | | | | Always wait 10 secs for output. If anything this can only lead to missed crashes during repro. Let's unify manager and repro behavior.
* pkg/report: combine report data into a structDmitry Vyukov2017-11-141-2/+7
| | | | | Parse returns 5 variables now. Later we may want to add crash "priority". Introduce Report struct that holds all report data.
* pkg/report: add corrupted report detectionAndrey Konovalov2017-11-131-1/+1
| | | | | This change makes pkg/report try to detect corrupted reports by using some heuristics.
* execprog: correctly handle fault injectionsAndrey Konovalov2017-11-071-17/+26
| | | | | | syz-execprog doesn't utilize info about fault injections from a prog log. Since syz-execprog is used by the repro package to reproduce crashes, crashes caused by fault injections might not reproduce.
* tools/syz-execprog: allow to override target OSDmitry Vyukov2017-11-061-1/+2
| | | | This is currently useful for akaros, which is tested remotely.
* docs, tools: add local link checkerAndrey Konovalov2017-10-271-0/+66
| | | | | | This commit adds tools/check_links.py script, that checks that all local links from documentation files are valid; fixes some of the invalid links that we had; and makes travis buildbot check them as well.
* syz-fuzzer: generates hints only for the call that gave new coverageDmitry Vyukov2017-10-231-7/+8
| | | | | | During smashing we know what call gave new coverage, so we can concentrate just on it. This helps to reduce amount of hints generated (we have too many of them).
* tools/syz-execprog: print total number of comps/hintsDmitry Vyukov2017-10-231-2/+18
|
* pkg/report: support multiple OSesDmitry Vyukov2017-10-184-96/+56
| | | | | | Introduce report.Reporter interface. Add an implementation per-OS. Make users be explicit about OS they are testing.
* tools/syz-mutate: allow to specify targetDmitry Vyukov2017-10-171-20/+21
|
* tools/syz-prog2c: allow to specify target OSDmitry Vyukov2017-10-161-1/+2
|
* tools/syz-stress: allow to specify target OSDmitry Vyukov2017-10-161-2/+12
|
* tools/syz-prog2c: import targetsDmitry Vyukov2017-10-021-0/+1
| | | | | Currently syz-prog2c is broken as it does not import any targets. Import sys package.
* sys/windows: add more descriptionsDmitry Vyukov2017-09-271-0/+279
|
* all: more assorted fuchsia supportDmitry Vyukov2017-09-223-36/+5
|
* all: initial support for fuchsiaDmitry Vyukov2017-09-203-12/+33
| | | | | | Nothing works, but builds. Update #191
* prog: remove default target and all global stateDmitry Vyukov2017-09-157-24/+34
| | | | | | Now each prog function accepts the desired target explicitly. No global, implicit state involved. This is much cleaner and allows cross-OS/arch testing, etc.
* syz-fuzzer, syz-execprog: add -arch flagDmitry Vyukov2017-09-151-1/+2
| | | | | arch flag specifies target arch, which can be different from GOARCH. For example, 386 executor with amd64 fuzzer.
* syz-manager/mgrconfig: explicitly specify target in configDmitry Vyukov2017-09-156-2/+28
| | | | | Add target config parameter (e.g. linux/amd64) which controls target OS/arch. No more explicit assumptions about target.
* prog, sys: move types to progDmitry Vyukov2017-09-054-6/+9
| | | | | | | | | | | Large overhaul moves syscalls and arg types from sys to prog. Sys package now depends on prog and contains only generated descriptions of syscalls. Introduce prog.Target type that encapsulates all targer properties, like syscall list, ptr/page size, etc. Also moves OS-dependent pieces like mmap call generation from prog to sys. Update #191
* sys: rename Call to SyscallDmitry Vyukov2017-09-051-4/+4
| | | | | In preparation for moving sys types to prog to avoid confusion between sys.Call and prog.Call.
* ipc, prog, fuzzer, execprog: add hints generation codeVictor Chibotaru2017-08-301-0/+14
| | | | | | | | | | | | | | | | | | | | | | A hint is basically a tuple consisting of a pointer to an argument in one of the syscalls of a program and a value, which should be assigned to that argument. A simplified version of hints workflow looks like this: 1. Fuzzer launches a program and collects all the comparisons' data for every syscall in the program. 2. Next it tries to match the obtained comparison operands' values vs. the input arguments' values. 3. For every such match the fuzzer mutates the program by replacing the pointed argument with the saved value. 4. If a valid program is obtained, then fuzzer launches it and checks if new coverage is obtained. This commit includes: 1. All the code related to hints generation, parsing and mutations. 2. Fuzzer functions to launch the process. 3. Some new stats gathered by fuzzer and manager, related to hints. 4. An updated version of execprog to test the hints process.
* pkg/compiler: more static error checkingDmitry Vyukov2017-08-271-4/+1
| | | | Update #217
* pkg/compiler, sys/syz-sysgen: move const handling to pkg/compilerDmitry Vyukov2017-08-271-3/+3
| | | | Now pkg/compiler deals with consts.
* tools: add headerparser as a tool to assist in writing system call descriptionsZubin Mithra2017-08-257-0/+731
| | | | | The tool can be found inside tools/syz-headerparser. Details on how to use headerparser can be found inside docs/headerparser_usage.md.
* Makefile: enforce formatting of sys files in presubmitDmitry Vyukov2017-08-181-0/+1
|
* pkg/ast: new parser for sys descriptionsDmitry Vyukov2017-08-181-0/+72
| | | | | | | | The old parser in sys/sysparser is too hacky, difficult to extend and drops debug info too early, so that we can't produce proper error messages. Add a new parser that is build like a proper language parser and preserves full debug info for every token.
* tools/create-gce-image.sh: explicitly specify target for grubDmitry Vyukov2017-08-111-1/+1
| | | | | | | | | On most distributions default grub target is i386-pc, which works. However, on some default is x86_64-efi, which fails with: grub-install: error: cannot find EFI directory. Explicitly specify i386-pc target.
* tools/syz-benchcmp: add execution speedDmitry Vyukov2017-08-101-0/+16
| | | | | | | | | Exec total is affected by initial triage/minimize phase, so two experiments can have the same execution speed in the stable mode, but have constant diff due to the initial phase. The one that is higher looks better, but that's not very important. Provide execution speed characteristic that is not affected by initial phase. It is not displayed by default.
* syz-dash, syz-gce: removeDmitry Vyukov2017-08-021-194/+0
| | | | This is now superseded by dashboard/app and syz-ci.
* tools/create-gce-image.sh: ignore SIGINTDmitry Vyukov2017-07-171-0/+5
| | | | | | If the script is aborted at an unfortunate point, it leaves the whole system broken. E.g. we've seen that fdisk cannot update partition table until the next reboot. If you really need to kill it, use a different signal. But better wait.
* pkg/kernel: actually pass cmdline/sysctl files to the build scriptDmitry Vyukov2017-07-171-2/+4
|
* syz-ci: allow to specify cmdline/sysctlsDmitry Vyukov2017-07-171-5/+20
| | | | | Allow to specify per-kernel command line and sysctl values to more closely mimic the target kernel.
* tools/create-image.sh: create 2G imagesDmitry Vyukov2017-07-171-1/+1
| | | | | 1G does not seem to be enough. Create 2G images as we do in create-gce-image.sh.
* all: use consistent file permissionsDmitry Vyukov2017-07-033-4/+7
| | | | | | | | | | | | | | | | Currently we have unix permissions for new files/dirs hardcoded throughout the code base. Some places use 0644, some - 0640, some - 0600 and a variety of other constants. Introduce osutil.MkdirAll/WriteFile that use the default permissions and use them throughout the code base. This makes permissions consistent and also allows to easily change the permissions later if we change our minds. Also merge pkg/fileutil into pkg/osutil as they become dependent on each other. The line between them was poorly defined anyway as both operate on files.
* tools/syz-symbolize: add report modeDmitry Vyukov2017-06-301-9/+36
| | | | | | Currently syz-symbolize symbolizes whole input file. Add a new mode (controlled with -report flag) when it prints report as would be extracted by syz-manager.
* Fix incorrect argument in syz-tty (#260)Zach Riggle2017-06-271-1/+1
|
* tools/syz-tty: add utility for testing of usb console reading codeDmitry Vyukov2017-06-261-0/+29
|
* syz-dash/dashboard: move from dashboardDmitry Vyukov2017-06-231-1/+1
| | | | | Move the old dashboard API into syz-dash to get it out of the way of the new dashboard.
* Added GCC and glibcraminfp2017-06-221-1/+1
|
* vm/gce: accept un-tar-ed imageDmitry Vyukov2017-06-171-22/+17
| | | | | | | | | | vm/gce differs from other VM types in that it accepts image in a weird, GCE-specific format (namely, image named disk.raw is put into .tar.gz file). This makes it impossible to write generic code that creates images for any VM types. Make vm/gce accept just image like e.g. vm/qemu and handle own specifics internally.
* tools/create-gce-image.sh: don't use verbose output for tar invocationDmitry Vyukov2017-06-171-2/+2
|
* syz-manager/mgrconfig: move sshkey from vm config to manager configDmitry Vyukov2017-06-172-14/+2
| | | | | | | | | | | | | | Sshkey is a property of image, which is in manager config. Move sshkey to the same location as image. The motivation for the move is as follows. Continuous build produces an image and the key, both need to be passed manager instance. Continuous build system should not distinguish different VM types and mess with their configs. NOTE FOR USERS: this breaks manager configs again. Hopefully the last time for now. Docs are updated.
* pkg/report: move from reportDmitry Vyukov2017-06-172-2/+2
|
* pkg/ipc: move from ipcDmitry Vyukov2017-06-172-2/+2
|
* pkg/csource: move from csourceDmitry Vyukov2017-06-172-2/+2
|
* pkg/cover: move from coverDmitry Vyukov2017-06-171-1/+1
|
* pkg/repro: move from pkgDmitry Vyukov2017-06-171-1/+1
|