diff options
| author | Andrey Konovalov <andreyknvl@google.com> | 2017-05-18 16:38:10 +0200 |
|---|---|---|
| committer | Andrey Konovalov <andreyknvl@google.com> | 2017-06-12 19:48:23 +0200 |
| commit | 1bdb387c18a852e75aef0b3c4ddb0481f90d66bd (patch) | |
| tree | 1d5cd657d7ed31032bb93a01ed21e2f111d0c117 /csource/csource.go | |
| parent | 4d1df73af9a6d40d3111e3f2a7dfb9f138fbde4b (diff) | |
csource: emit bitmasks only when required
Diffstat (limited to 'csource/csource.go')
| -rw-r--r-- | csource/csource.go | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/csource/csource.go b/csource/csource.go index 0a5bcddd7..8faae8e5e 100644 --- a/csource/csource.go +++ b/csource/csource.go @@ -42,18 +42,6 @@ type Options struct { Repro bool } -func RequiresTun(p *prog.Prog) bool { - for _, c := range p.Calls { - switch c.Meta.CallName { - case "syz_emit_ethernet": - return true - case "syz_extract_tcp_seq": - return true - } - } - return false -} - func Write(p *prog.Prog, opts Options) ([]byte, error) { exec := make([]byte, prog.ExecBufferSize) if err := p.SerializeForExec(exec, 0); err != nil { @@ -61,7 +49,7 @@ func Write(p *prog.Prog, opts Options) ([]byte, error) { } w := new(bytes.Buffer) - if RequiresTun(p) { + if prog.RequiresTun(p) { opts.EnableTun = true } @@ -78,7 +66,7 @@ func Write(p *prog.Prog, opts Options) ([]byte, error) { } fmt.Fprintf(w, "\n") - hdr, err := preprocessCommonHeader(opts, handled) + hdr, err := preprocessCommonHeader(opts, handled, prog.RequiresBitmasks(p)) if err != nil { return nil, err } @@ -340,8 +328,11 @@ loop: return calls, n } -func preprocessCommonHeader(opts Options, handled map[string]int) (string, error) { +func preprocessCommonHeader(opts Options, handled map[string]int, useBitmasks bool) (string, error) { var defines []string + if useBitmasks { + defines = append(defines, "SYZ_USE_BITMASKS") + } switch opts.Sandbox { case "none": defines = append(defines, "SYZ_SANDBOX_NONE") |
