aboutsummaryrefslogtreecommitdiffstats
path: root/prog/encodingexec.go
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2021-09-23 16:15:41 +0000
committerAleksandr Nogikh <wp32pw@gmail.com>2021-12-10 12:30:07 +0100
commitfd8caa5462e64f37cb9eebd75ffca1737dde447d (patch)
treebfa900ebf41099b21476e72acdf063ee630178c9 /prog/encodingexec.go
parent4d4ce9bc2a12073dcc8b917f9fc2a4ecba26c4c5 (diff)
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.
Diffstat (limited to 'prog/encodingexec.go')
-rw-r--r--prog/encodingexec.go8
1 files changed, 7 insertions, 1 deletions
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)
})
}