From 42a1ab121510d4ace36fddeb7396bdb7f28bd489 Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Thu, 24 Oct 2024 18:38:29 +0200 Subject: pkg/corpus: move focus area configuration to the constructor Set Corpus in HTTPServer dynamically. Refactor syz-manager and syz-diff accordingly. --- tools/syz-diff/diff.go | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'tools/syz-diff') diff --git a/tools/syz-diff/diff.go b/tools/syz-diff/diff.go index e593205bc..6a6a0991d 100644 --- a/tools/syz-diff/diff.go +++ b/tools/syz-diff/diff.go @@ -90,7 +90,6 @@ func main() { http: &manager.HTTPServer{ Cfg: newCfg, StartTime: time.Now(), - Corpus: new.corpus, DiffStore: store, }, } @@ -232,7 +231,6 @@ type kernelContext struct { ctx context.Context cfg *mgrconfig.Config reporter *report.Reporter - corpus *corpus.Corpus fuzzer atomic.Pointer[fuzzer.Fuzzer] serv rpcserver.Server servStats rpcserver.Stats @@ -256,7 +254,6 @@ func setup(ctx context.Context, name string, cfg *mgrconfig.Config) *kernelConte name: name, ctx: ctx, cfg: cfg, - corpus: corpus.NewCorpus(ctx), crashes: make(chan *report.Report, 128), candidates: make(chan []fuzzer.Candidate), servStats: rpcserver.NewNamedStats(name), @@ -320,8 +317,9 @@ func (kc *kernelContext) MachineChecked(features flatrpc.Feature, syscalls map[* func (kc *kernelContext) setupFuzzer(features flatrpc.Feature, syscalls map[*prog.Syscall]bool) queue.Source { rnd := rand.New(rand.NewSource(time.Now().UnixNano())) - fuzzerObj := fuzzer.NewFuzzer(context.Background(), &fuzzer.Config{ - Corpus: kc.corpus, + corpusObj := corpus.NewFocusedCorpus(kc.ctx, nil, kc.coverFilters.Areas) + fuzzerObj := fuzzer.NewFuzzer(kc.ctx, &fuzzer.Config{ + Corpus: corpusObj, Coverage: kc.cfg.Cover, // TODO: it may be unstable between different revisions though. // For now it's only kept true because it seems to increase repro chances in local runs (???). @@ -343,6 +341,7 @@ func (kc *kernelContext) setupFuzzer(features flatrpc.Feature, syscalls map[*pro if kc.http != nil { kc.http.Fuzzer.Store(fuzzerObj) kc.http.EnabledSyscalls.Store(syscalls) + kc.http.Corpus.Store(corpusObj) } filtered := manager.FilterCandidates(<-kc.candidates, syscalls, false).Candidates @@ -376,7 +375,6 @@ func (kc *kernelContext) CoverageFilter(modules []*vminfo.KernelModule) []uint64 log.Fatalf("failed to init coverage filter: %v", err) } kc.coverFilters = filters - kc.corpus.SetFocusAreas(filters.Areas) log.Logf(0, "cover filter size: %d", len(filters.ExecutorFilter)) if kc.http != nil { kc.http.Cover.Store(&manager.CoverageInfo{ -- cgit mrf-deployment