diff --git a/cmd/dogefuzz/env.go b/cmd/dogefuzz/env.go index ee8a0aa..9748a03 100644 --- a/cmd/dogefuzz/env.go +++ b/cmd/dogefuzz/env.go @@ -76,6 +76,7 @@ type Env interface { BlackboxFuzzer() interfaces.Fuzzer GreyboxFuzzer() interfaces.Fuzzer DirectedGreyboxFuzzer() interfaces.Fuzzer + AltDirectedGreyboxFuzzer() interfaces.Fuzzer OtherDirectedGreyboxFuzzer() interfaces.Fuzzer PowerSchedule() interfaces.PowerSchedule } @@ -133,6 +134,7 @@ type env struct { blackboxFuzzer interfaces.Fuzzer greyboxFuzzer interfaces.Fuzzer directedGreyboxFuzzer interfaces.Fuzzer + altDirectedGreyboxFuzzer interfaces.Fuzzer otherDirectedGreyboxFuzzer interfaces.Fuzzer powerSchedule interfaces.PowerSchedule } @@ -479,6 +481,13 @@ func (e *env) DirectedGreyboxFuzzer() interfaces.Fuzzer { return e.directedGreyboxFuzzer } +func (e *env) AltDirectedGreyboxFuzzer() interfaces.Fuzzer { + if e.altDirectedGreyboxFuzzer == nil { + e.altDirectedGreyboxFuzzer = fuzz.NewAltDirectedGreyboxFuzzer(e) + } + return e.altDirectedGreyboxFuzzer +} + func (e *env) OtherDirectedGreyboxFuzzer() interfaces.Fuzzer { if e.otherDirectedGreyboxFuzzer == nil { e.otherDirectedGreyboxFuzzer = fuzz.NewOtherDirectedGreyboxFuzzer(e) diff --git a/fuzz/common.go b/fuzz/common.go index 59d0576..6f13ee7 100644 --- a/fuzz/common.go +++ b/fuzz/common.go @@ -15,6 +15,7 @@ type env interface { BlackboxFuzzer() interfaces.Fuzzer GreyboxFuzzer() interfaces.Fuzzer DirectedGreyboxFuzzer() interfaces.Fuzzer + AltDirectedGreyboxFuzzer() interfaces.Fuzzer OtherDirectedGreyboxFuzzer() interfaces.Fuzzer PowerSchedule() interfaces.PowerSchedule @@ -34,6 +35,8 @@ func buildOrderer(strategy common.PowerScheduleStrategy, contract *dto.ContractD return newCoverageBasedOrderer() case common.DISTANCE_BASED_STRATEGY: return newDistanceBasedOrderer(contract) + case common.ALT_DISTANCE_BASED_STRATEGY: + return newAltDistanceBasedOrderer(contract) case common.DISTANCE_COVERAGE_BASED_STRATEGY: return newDistanceCoverageBasedOrderer(contract) default: diff --git a/fuzz/leader.go b/fuzz/leader.go index 376d3e1..b8a9998 100644 --- a/fuzz/leader.go +++ b/fuzz/leader.go @@ -9,6 +9,7 @@ type fuzzerLeader struct { blackboxFuzzer interfaces.Fuzzer greyboxFuzzer interfaces.Fuzzer directedGreyboxFuzzer interfaces.Fuzzer + altDirectedGreyboxFuzzer interfaces.Fuzzer otherDirectedGreyboxFuzzer interfaces.Fuzzer } @@ -17,6 +18,7 @@ func NewFuzzerLeader(e env) *fuzzerLeader { blackboxFuzzer: e.BlackboxFuzzer(), greyboxFuzzer: e.GreyboxFuzzer(), directedGreyboxFuzzer: e.DirectedGreyboxFuzzer(), + altDirectedGreyboxFuzzer: e.AltDirectedGreyboxFuzzer(), otherDirectedGreyboxFuzzer: e.OtherDirectedGreyboxFuzzer(), } } @@ -29,6 +31,8 @@ func (l *fuzzerLeader) GetFuzzerStrategy(typ common.FuzzingType) (interfaces.Fuz return l.greyboxFuzzer, nil case common.DIRECTED_GREYBOX_FUZZING: return l.directedGreyboxFuzzer, nil + case common.ALT_DIRECTED_GREYBOX_FUZZING: + return l.altDirectedGreyboxFuzzer, nil case common.OTHER_DIRECTED_GREYBOX_FUZZING: return l.otherDirectedGreyboxFuzzer, nil default: diff --git a/listener/env.go b/listener/env.go index 4149f0f..cf4dcf4 100644 --- a/listener/env.go +++ b/listener/env.go @@ -40,6 +40,7 @@ type Env interface { BlackboxFuzzer() interfaces.Fuzzer GreyboxFuzzer() interfaces.Fuzzer DirectedGreyboxFuzzer() interfaces.Fuzzer + AltDirectedGreyboxFuzzer() interfaces.Fuzzer OtherDirectedGreyboxFuzzer() interfaces.Fuzzer PowerSchedule() interfaces.PowerSchedule } diff --git a/pkg/common/types.go b/pkg/common/types.go index 6ed4d5d..bb956ac 100644 --- a/pkg/common/types.go +++ b/pkg/common/types.go @@ -33,6 +33,7 @@ const ( BLACKBOX_FUZZING FuzzingType = "blackbox" GREYBOX_FUZZING FuzzingType = "greybox" DIRECTED_GREYBOX_FUZZING FuzzingType = "directed_greybox" + ALT_DIRECTED_GREYBOX_FUZZING FuzzingType = "alt_directed_greybox" OTHER_DIRECTED_GREYBOX_FUZZING FuzzingType = "other_directed_greybox" ) @@ -79,6 +80,7 @@ type PowerScheduleStrategy string const ( DISTANCE_BASED_STRATEGY PowerScheduleStrategy = "distance_based" + ALT_DISTANCE_BASED_STRATEGY PowerScheduleStrategy = "alt_distance_based" COVERAGE_BASED_STRATEGY PowerScheduleStrategy = "coverage_based" DISTANCE_COVERAGE_BASED_STRATEGY PowerScheduleStrategy = "distance_coverage_based" )