From c054a92ddef28b343db8a733b3e191cf96c28768 Mon Sep 17 00:00:00 2001 From: Andrey Konovalov Date: Wed, 10 Apr 2019 18:11:44 +0200 Subject: pkg/csource: generate timeouts for USB syzcalls This patch only covers per call timeouts, per prog one is not adjusted yet. --- pkg/csource/csource.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'pkg/csource/csource.go') diff --git a/pkg/csource/csource.go b/pkg/csource/csource.go index 75b5a5e02..de99313d2 100644 --- a/pkg/csource/csource.go +++ b/pkg/csource/csource.go @@ -73,6 +73,18 @@ func Write(p *prog.Prog, opts Options) ([]byte, error) { replacements["SANDBOX_FUNC"] = replacements["SYSCALLS"] replacements["SYSCALLS"] = "unused" } + // Must match timeouts in executor/executor.cc. + specialCallTimeouts := map[string]int{ + "syz_usb_connect": 2000, + "syz_usb_disconnect": 200, + } + timeoutExpr := "45" + for i, call := range p.Calls { + if timeout, ok := specialCallTimeouts[call.Meta.CallName]; ok { + timeoutExpr += fmt.Sprintf(" + (call == %d ? %d : 0)", i, timeout) + } + } + replacements["CALL_TIMEOUT"] = timeoutExpr result, err := createCommonHeader(p, mmapProg, replacements, opts) if err != nil { return nil, err -- cgit mrf-deployment