aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/fuzzer
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/fuzzer')
-rw-r--r--pkg/fuzzer/fuzzer.go5
-rw-r--r--pkg/fuzzer/fuzzer_test.go7
-rw-r--r--pkg/fuzzer/job.go17
-rw-r--r--pkg/fuzzer/queue/queue.go7
4 files changed, 20 insertions, 16 deletions
diff --git a/pkg/fuzzer/fuzzer.go b/pkg/fuzzer/fuzzer.go
index eaedc951d..92b4c8bf1 100644
--- a/pkg/fuzzer/fuzzer.go
+++ b/pkg/fuzzer/fuzzer.go
@@ -12,6 +12,7 @@ import (
"time"
"github.com/google/syzkaller/pkg/corpus"
+ "github.com/google/syzkaller/pkg/flatrpc"
"github.com/google/syzkaller/pkg/fuzzer/queue"
"github.com/google/syzkaller/pkg/ipc"
"github.com/google/syzkaller/pkg/stats"
@@ -121,7 +122,7 @@ func (fuzzer *Fuzzer) processResult(req *queue.Request, res *queue.Result, flags
// We do it before unblocking the waiting threads because
// it may result it concurrent modification of req.Prog.
// If we are already triaging this exact prog, this is flaky coverage.
- if req.ExecOpts.ExecFlags&ipc.FlagCollectSignal > 0 && res.Info != nil && !inTriage {
+ if req.ExecOpts.ExecFlags&flatrpc.ExecFlagCollectSignal > 0 && res.Info != nil && !inTriage {
for call, info := range res.Info.Calls {
fuzzer.triageProgCall(req.Prog, &info, call, flags)
}
@@ -325,7 +326,7 @@ func (fuzzer *Fuzzer) RotateMaxSignal(items int) {
fuzzer.Cover.subtract(delta)
}
-func setFlags(execFlags ipc.ExecFlags) ipc.ExecOpts {
+func setFlags(execFlags flatrpc.ExecFlag) ipc.ExecOpts {
return ipc.ExecOpts{
ExecFlags: execFlags,
}
diff --git a/pkg/fuzzer/fuzzer_test.go b/pkg/fuzzer/fuzzer_test.go
index f358aacab..cb58a4e10 100644
--- a/pkg/fuzzer/fuzzer_test.go
+++ b/pkg/fuzzer/fuzzer_test.go
@@ -18,6 +18,7 @@ import (
"github.com/google/syzkaller/pkg/corpus"
"github.com/google/syzkaller/pkg/csource"
+ "github.com/google/syzkaller/pkg/flatrpc"
"github.com/google/syzkaller/pkg/fuzzer/queue"
"github.com/google/syzkaller/pkg/ipc"
"github.com/google/syzkaller/pkg/ipc/ipcconfig"
@@ -190,10 +191,10 @@ func emulateExec(req *queue.Request) (*queue.Result, string, error) {
cover := uint32(call.Meta.ID*1024) +
crc32.Checksum(serializedLines[i], crc32q)%4
callInfo := ipc.CallInfo{}
- if req.ExecOpts.ExecFlags&ipc.FlagCollectCover > 0 {
+ if req.ExecOpts.ExecFlags&flatrpc.ExecFlagCollectCover > 0 {
callInfo.Cover = []uint32{cover}
}
- if req.ExecOpts.ExecFlags&ipc.FlagCollectSignal > 0 {
+ if req.ExecOpts.ExecFlags&flatrpc.ExecFlagCollectSignal > 0 {
callInfo.Signal = []uint32{cover}
}
info.Calls = append(info.Calls, callInfo)
@@ -285,7 +286,7 @@ func newProc(t *testing.T, target *prog.Target, executor string) *executorProc {
t.Fatal(err)
}
config.Executor = executor
- execOpts.EnvFlags |= ipc.FlagSignal
+ execOpts.EnvFlags |= flatrpc.ExecEnvSignal
env, err := ipc.MakeEnv(config, 0)
if err != nil {
t.Fatal(err)
diff --git a/pkg/fuzzer/job.go b/pkg/fuzzer/job.go
index 174acdc52..4e605f1c2 100644
--- a/pkg/fuzzer/job.go
+++ b/pkg/fuzzer/job.go
@@ -9,6 +9,7 @@ import (
"github.com/google/syzkaller/pkg/corpus"
"github.com/google/syzkaller/pkg/cover"
+ "github.com/google/syzkaller/pkg/flatrpc"
"github.com/google/syzkaller/pkg/fuzzer/queue"
"github.com/google/syzkaller/pkg/ipc"
"github.com/google/syzkaller/pkg/signal"
@@ -35,7 +36,7 @@ func genProgRequest(fuzzer *Fuzzer, rnd *rand.Rand) *queue.Request {
fuzzer.ChoiceTable())
return &queue.Request{
Prog: p,
- ExecOpts: setFlags(ipc.FlagCollectSignal),
+ ExecOpts: setFlags(flatrpc.ExecFlagCollectSignal),
Stat: fuzzer.statExecGenerate,
}
}
@@ -54,7 +55,7 @@ func mutateProgRequest(fuzzer *Fuzzer, rnd *rand.Rand) *queue.Request {
)
return &queue.Request{
Prog: newP,
- ExecOpts: setFlags(ipc.FlagCollectSignal),
+ ExecOpts: setFlags(flatrpc.ExecFlagCollectSignal),
Stat: fuzzer.statExecFuzz,
}
}
@@ -69,7 +70,7 @@ func candidateRequest(fuzzer *Fuzzer, input Candidate) (*queue.Request, ProgType
}
return &queue.Request{
Prog: input.Prog,
- ExecOpts: setFlags(ipc.FlagCollectSignal),
+ ExecOpts: setFlags(flatrpc.ExecFlagCollectSignal),
Stat: fuzzer.statExecCandidate,
Important: true,
}, flags
@@ -163,7 +164,7 @@ func (job *triageJob) deflake(exec func(*queue.Request, ProgTypes) *queue.Result
}
result := exec(&queue.Request{
Prog: job.p,
- ExecOpts: setFlags(ipc.FlagCollectCover | ipc.FlagCollectSignal),
+ ExecOpts: setFlags(flatrpc.ExecFlagCollectCover | flatrpc.ExecFlagCollectSignal),
ReturnAllSignal: true,
Stat: stat,
}, progInTriage)
@@ -202,7 +203,7 @@ func (job *triageJob) minimize(newSignal signal.Signal) (stop bool) {
for i := 0; i < minimizeAttempts; i++ {
result := job.execute(&queue.Request{
Prog: p1,
- ExecOpts: setFlags(ipc.FlagCollectSignal),
+ ExecOpts: setFlags(flatrpc.ExecFlagCollectSignal),
SignalFilter: newSignal,
SignalFilterCall: call1,
Stat: job.fuzzer.statExecMinimize,
@@ -273,7 +274,7 @@ func (job *smashJob) run(fuzzer *Fuzzer) {
fuzzer.Config.Corpus.Programs())
result := fuzzer.execute(fuzzer.smashQueue, &queue.Request{
Prog: p,
- ExecOpts: setFlags(ipc.FlagCollectSignal),
+ ExecOpts: setFlags(flatrpc.ExecFlagCollectSignal),
Stat: fuzzer.statExecSmash,
})
if result.Stop() {
@@ -351,7 +352,7 @@ func (job *hintsJob) run(fuzzer *Fuzzer) {
for i := 0; i < 2; i++ {
result := fuzzer.execute(fuzzer.smashQueue, &queue.Request{
Prog: p,
- ExecOpts: setFlags(ipc.FlagCollectComps),
+ ExecOpts: setFlags(flatrpc.ExecFlagCollectComps),
Stat: fuzzer.statExecSeed,
})
if result.Stop() || result.Info == nil {
@@ -374,7 +375,7 @@ func (job *hintsJob) run(fuzzer *Fuzzer) {
func(p *prog.Prog) bool {
result := fuzzer.execute(fuzzer.smashQueue, &queue.Request{
Prog: p,
- ExecOpts: setFlags(ipc.FlagCollectSignal),
+ ExecOpts: setFlags(flatrpc.ExecFlagCollectSignal),
Stat: fuzzer.statExecHint,
})
return !result.Stop()
diff --git a/pkg/fuzzer/queue/queue.go b/pkg/fuzzer/queue/queue.go
index 6ff94b9be..36226299a 100644
--- a/pkg/fuzzer/queue/queue.go
+++ b/pkg/fuzzer/queue/queue.go
@@ -11,6 +11,7 @@ import (
"sync"
"sync/atomic"
+ "github.com/google/syzkaller/pkg/flatrpc"
"github.com/google/syzkaller/pkg/hash"
"github.com/google/syzkaller/pkg/ipc"
"github.com/google/syzkaller/pkg/signal"
@@ -102,15 +103,15 @@ func (r *Request) Risky() bool {
}
func (r *Request) Validate() error {
- collectSignal := r.ExecOpts.ExecFlags&ipc.FlagCollectSignal > 0
+ collectSignal := r.ExecOpts.ExecFlags&flatrpc.ExecFlagCollectSignal > 0
if r.ReturnAllSignal && !collectSignal {
return fmt.Errorf("ReturnAllSignal is set, but FlagCollectSignal is not")
}
if r.SignalFilter != nil && !collectSignal {
return fmt.Errorf("SignalFilter must be used with FlagCollectSignal")
}
- collectComps := r.ExecOpts.ExecFlags&ipc.FlagCollectComps > 0
- collectCover := r.ExecOpts.ExecFlags&ipc.FlagCollectCover > 0
+ collectComps := r.ExecOpts.ExecFlags&flatrpc.ExecFlagCollectComps > 0
+ collectCover := r.ExecOpts.ExecFlags&flatrpc.ExecFlagCollectCover > 0
if (collectComps) && (collectSignal || collectCover) {
return fmt.Errorf("hint collection is mutually exclusive with signal/coverage")
}