From fd8caa5462e64f37cb9eebd75ffca1737dde447d Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Thu, 23 Sep 2021 16:15:41 +0000 Subject: all: replace collide mode by `async` call property Replace the currently existing straightforward approach to race triggering (that was almost entirely implemented inside syz-executor) with a more flexible one. The `async` call property instructs syz-executor not to block until the call has completed execution and proceed immediately to the next call. The decision on what calls to mark with `async` is made by syz-fuzzer. Ultimately this should let us implement more intelligent race provoking strategies as well as make more fine-grained reproducers. --- prog/encodingexec.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'prog/encodingexec.go') diff --git a/prog/encodingexec.go b/prog/encodingexec.go index fea114717..44a49fc58 100644 --- a/prog/encodingexec.go +++ b/prog/encodingexec.go @@ -134,12 +134,18 @@ type argInfo struct { func (w *execContext) writeCallProps(props CallProps) { w.write(execInstrSetProps) props.ForeachProp(func(_, _ string, value reflect.Value) { + var uintVal uint64 switch kind := value.Kind(); kind { case reflect.Int: - w.write(uint64(value.Int())) + uintVal = uint64(value.Int()) + case reflect.Bool: + if value.Bool() { + uintVal = 1 + } default: panic("Unsupported (yet) kind: " + kind.String()) } + w.write(uintVal) }) } -- cgit mrf-deployment