aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2019-04-29 14:32:04 +0200
committerDmitry Vyukov <dvyukov@google.com>2019-05-07 09:09:57 +0200
commit85e64702d65a4e91ee71e0c1de540bd2a58d0dbe (patch)
treeb2c3f97ea2b2c9e5a7b4d71d7da6f35e28ce6da8
parent27544d0fc835af3d9135c8706be95879b7f5a7a2 (diff)
syz-fuzzer: fix "all system calls are disabled" handling
Currently we don't fill enabled/disabled calls when we return "all system calls are disabled" error. As the result manager does not print any explanation for the error. Fill in enabled/disabled calls when all calls are disabled.
-rw-r--r--syz-fuzzer/fuzzer.go5
-rw-r--r--syz-fuzzer/testing.go12
2 files changed, 9 insertions, 8 deletions
diff --git a/syz-fuzzer/fuzzer.go b/syz-fuzzer/fuzzer.go
index b96938091..28d2e849c 100644
--- a/syz-fuzzer/fuzzer.go
+++ b/syz-fuzzer/fuzzer.go
@@ -163,9 +163,10 @@ func main() {
checkArgs.allSandboxes = r.AllSandboxes
r.CheckResult, err = checkMachine(checkArgs)
if err != nil {
- r.CheckResult = &rpctype.CheckArgs{
- Error: err.Error(),
+ if r.CheckResult == nil {
+ r.CheckResult = new(rpctype.CheckArgs)
}
+ r.CheckResult.Error = err.Error()
}
r.CheckResult.Name = *flagName
if err := manager.Call("Manager.Check", r.CheckResult, nil); err != nil {
diff --git a/syz-fuzzer/testing.go b/syz-fuzzer/testing.go
index c193e313a..b2bb3615b 100644
--- a/syz-fuzzer/testing.go
+++ b/syz-fuzzer/testing.go
@@ -160,11 +160,11 @@ func checkMachine(args *checkArgs) (*rpctype.CheckArgs, error) {
}
for _, sandbox := range sandboxes {
enabledCalls, disabledCalls, err := buildCallList(args.target, args.enabledCalls, sandbox)
- if err != nil {
- return nil, err
- }
res.EnabledCalls[sandbox] = enabledCalls
res.DisabledCalls[sandbox] = disabledCalls
+ if err != nil {
+ return res, err
+ }
}
if args.allSandboxes {
var enabled []int
@@ -291,11 +291,11 @@ func buildCallList(target *prog.Target, enabledCalls []int, sandbox string) (
delete(calls, c)
}
}
- if len(calls) == 0 {
- return nil, nil, fmt.Errorf("all system calls are disabled")
- }
for c := range calls {
enabled = append(enabled, c.ID)
}
+ if len(calls) == 0 {
+ return enabled, disabled, fmt.Errorf("all system calls are disabled")
+ }
return enabled, disabled, nil
}