aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/fuzzer/cover.go
Commit message (Collapse)AuthorAgeFilesLines
* pkg/fuzzer,pkg/corpus: detection and preservation of programs with ↵Grigory Bazilevich13 hours1-0/+8
| | | | probability coverage
* pkg/signal: delete unusedTaras Madan2025-02-061-8/+0
|
* pkg/stat: rename package name to singular formDmitry Vyukov2024-07-241-3/+3
| | | | | | | | Go package names should generally be singular form: https://go.dev/blog/package-names https://rakyll.org/style-packages https://groups.google.com/g/golang-nuts/c/buBwLar1gNw
* pkg/stats: rename Create to NewDmitry Vyukov2024-07-241-1/+1
| | | | | | New is more idiomatic name and is shorter (lines where stats.Create is used are usually long, so making them a bit shorter is good).
* pkg/fuzzer: remove signal rotationDmitry Vyukov2024-07-021-25/+6
| | | | | | | Signal rotation is intended to make the fuzzer re-discover flaky coverage in non flaky way. However, taking into accout that we get effectively the same effect after each manager restart, and that the fuzzer is overloaded with triage/smash jobs, it does not look to be worth it.
* all: adapt all cover and sig to 64bitJoey Jiao2024-05-271-1/+1
| | | | | | | | | | | | | | | | | | Taken some arm64 devices for example: kaslr_offset is diff at bits 12-40, and kernel modules are loaded at 2GB space, so we have `ffffffd342e10000 T _stext` where uppper 32bit is ffffffd3. However, if we check modules range, the 1st module is loaded at 0xffffffd2eeb2a000, while the last module is loaded at 0xffffffd2f42c4000. We can see the upper 32bits are diff for core kernel and modules. If we use current 32bits for covered PC, we will get wrong module address recovered. So we need to move to 64bit cover and signal: - change cover/sig to 64bit to fit for syz-executor change - remove kernel upper base logic as kernel upper base is not a constant when kaslr enabled for core kernel and modules. - remove unused pcBase
* all: refactor statsDmitry Vyukov2024-04-091-12/+8
| | | | | | | Add ability for each package to create and export own stats. Each stat is self-contained, describes how it should be presented, and there is not need to copy them from one package to another. Stats also keep historical data and allow building graphs over time.
* pkg/fuzzer: implement basic max signal rotationAleksandr Nogikh2024-03-251-6/+26
| | | | | | | Once in 15 minutes, drop 1000 elements of the pure max signal (that is, max signal minus corpus signal). It seems to have a positive effect on the total fuzzing performance.
* all: move fuzzer to the hostAleksandr Nogikh2024-03-251-0/+6
| | | | | | | | | | | | Instead of doing fuzzing in parallel in running VM, make all decisions in the host syz-manager process. Instantiate and keep a fuzzer.Fuzzer object in syz-manager and update the RPC between syz-manager and syz-fuzzer to exchange exact programs to execute and their resulting signal and coverage. To optimize the networking traffic, exchange mostly only the difference between the known max signal and the detected signal.
* all: rename corpus and fuzzer Stat objectsAleksandr Nogikh2024-03-191-3/+3
| | | | | Stats() seems to be a more sound choice since these structures include multiple data points.
* pkg/corpus: a separate package for the corpus functionalityAleksandr Nogikh2024-03-181-0/+56
pkg/fuzzer and syz-manager have a common corpus functionality that can be well be unified. Create a separate pkg/corpus package that would be used by both of them. It will simplify further work of moving pkg/fuzzer to the host.