aboutsummaryrefslogtreecommitdiffstats
path: root/syz-manager
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2024-08-05 14:48:58 +0200
committerAleksandr Nogikh <nogikh@google.com>2024-08-06 08:24:55 +0000
commit02d235671dbf89097f52a94a165703fa274079a2 (patch)
tree3530bdce9402487cd1bed5b7c2557b66d08f3217 /syz-manager
parentd09987bf4245ee5e985530f65901855f39f273a3 (diff)
syz-manager: move prog helpers to the prog package
Reduce the size of syz-manager.
Diffstat (limited to 'syz-manager')
-rw-r--r--syz-manager/hub.go2
-rw-r--r--syz-manager/manager.go24
2 files changed, 3 insertions, 23 deletions
diff --git a/syz-manager/hub.go b/syz-manager/hub.go
index 2b8d21be5..75ac8f6a0 100644
--- a/syz-manager/hub.go
+++ b/syz-manager/hub.go
@@ -320,7 +320,7 @@ func (hc *HubConnector) parseProgram(data []byte) (*prog.Prog, error) {
if err != nil {
return nil, err
}
- if containsDisabled(p, hc.enabledCalls) {
+ if !p.OnlyContains(hc.enabledCalls) {
return nil, fmt.Errorf("contains disabled calls")
}
return p, nil
diff --git a/syz-manager/manager.go b/syz-manager/manager.go
index 4f30742dc..7486b771f 100644
--- a/syz-manager/manager.go
+++ b/syz-manager/manager.go
@@ -638,7 +638,7 @@ func (mgr *Manager) loadCorpus() []fuzzer.Candidate {
seeds := 0
var candidates []fuzzer.Candidate
for _, item := range <-mgr.corpusPreload {
- if containsDisabled(item.Prog, mgr.targetEnabledSyscalls) {
+ if !item.Prog.OnlyContains(mgr.targetEnabledSyscalls) {
if mgr.cfg.PreserveCorpus {
// This program contains a disabled syscall.
// We won't execute it, but remember its hash so
@@ -649,7 +649,7 @@ func (mgr *Manager) loadCorpus() []fuzzer.Candidate {
// We cut out the disabled syscalls and retriage/minimize what remains from the prog.
// The original prog will be deleted from the corpus.
item.Flags &= ^fuzzer.ProgMinimized
- programLeftover(mgr.target, mgr.targetEnabledSyscalls, item.Prog)
+ item.Prog.FilterInplace(mgr.targetEnabledSyscalls)
if len(item.Prog.Calls) == 0 {
continue
}
@@ -663,17 +663,6 @@ func (mgr *Manager) loadCorpus() []fuzzer.Candidate {
return candidates
}
-func programLeftover(target *prog.Target, enabled map[*prog.Syscall]bool, p *prog.Prog) {
- for i := 0; i < len(p.Calls); {
- c := p.Calls[i]
- if !enabled[c.Meta] {
- p.RemoveCall(i)
- continue
- }
- i++
- }
-}
-
func loadProg(target *prog.Target, data []byte) (*prog.Prog, error) {
p, err := target.Deserialize(data, prog.NonStrict)
if err != nil {
@@ -691,15 +680,6 @@ func loadProg(target *prog.Target, data []byte) (*prog.Prog, error) {
return p, nil
}
-func containsDisabled(p *prog.Prog, enabled map[*prog.Syscall]bool) bool {
- for _, c := range p.Calls {
- if !enabled[c.Meta] {
- return true
- }
- }
- return false
-}
-
func (mgr *Manager) fuzzerInstance(ctx context.Context, inst *vm.Instance, updInfo dispatcher.UpdateInfo) {
injectExec := make(chan bool, 10)
mgr.serv.CreateInstance(inst.Index(), injectExec, updInfo)