diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2018-05-07 15:51:00 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2018-05-07 16:23:18 +0200 |
| commit | 3f70522c7ed710df288262e9a85eaed6c3cb5efe (patch) | |
| tree | 37fecb940466616162bb9b390da8ce736ce2ef7f /tools | |
| parent | 55a5e98a0a47bfac3653abb2d8f8f7b56d56685f (diff) | |
tools/syz-execprog: split overly large function
Update #538
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/syz-execprog/execprog.go | 96 |
1 files changed, 52 insertions, 44 deletions
diff --git a/tools/syz-execprog/execprog.go b/tools/syz-execprog/execprog.go index e64172d9f..40aa521ce 100644 --- a/tools/syz-execprog/execprog.go +++ b/tools/syz-execprog/execprog.go @@ -48,54 +48,12 @@ func main() { log.Fatalf("%v", err) } - var entries []*prog.LogEntry - for _, fn := range flag.Args() { - data, err := ioutil.ReadFile(fn) - if err != nil { - log.Fatalf("failed to read log file: %v", err) - } - entries = append(entries, target.ParseLog(data)...) - } - log.Logf(0, "parsed %v programs", len(entries)) + entries := loadPrograms(target, flag.Args()) if len(entries) == 0 { return } - config, execOpts, err := ipc.DefaultConfig() - if err != nil { - log.Fatalf("%v", err) - } - if config.Flags&ipc.FlagSignal != 0 { - execOpts.Flags |= ipc.FlagCollectCover - } - if *flagCoverFile != "" { - config.Flags |= ipc.FlagSignal - execOpts.Flags |= ipc.FlagCollectCover - execOpts.Flags &^= ipc.FlagDedupCover - } - if *flagHints { - if execOpts.Flags&ipc.FlagCollectCover != 0 { - execOpts.Flags ^= ipc.FlagCollectCover - } - execOpts.Flags |= ipc.FlagCollectComps - } - - if *flagFaultCall >= 0 { - config.Flags |= ipc.FlagEnableFault - execOpts.Flags |= ipc.FlagInjectFault - execOpts.FaultCall = *flagFaultCall - execOpts.FaultNth = *flagFaultNth - } - - handled := make(map[string]bool) - for _, entry := range entries { - for _, call := range entry.P.Calls { - handled[call.Meta.CallName] = true - } - } - if handled["syz_emit_ethernet"] || handled["syz_extract_tcp_res"] { - config.Flags |= ipc.FlagEnableTun - } + config, execOpts := createConfig(entries) var wg sync.WaitGroup wg.Add(*flagProcs) @@ -223,3 +181,53 @@ func main() { osutil.HandleInterrupts(shutdown) wg.Wait() } + +func loadPrograms(target *prog.Target, files []string) []*prog.LogEntry { + var entries []*prog.LogEntry + for _, fn := range files { + data, err := ioutil.ReadFile(fn) + if err != nil { + log.Fatalf("failed to read log file: %v", err) + } + entries = append(entries, target.ParseLog(data)...) + } + log.Logf(0, "parsed %v programs", len(entries)) + return entries +} + +func createConfig(entries []*prog.LogEntry) (*ipc.Config, *ipc.ExecOpts) { + config, execOpts, err := ipc.DefaultConfig() + if err != nil { + log.Fatalf("%v", err) + } + if config.Flags&ipc.FlagSignal != 0 { + execOpts.Flags |= ipc.FlagCollectCover + } + if *flagCoverFile != "" { + config.Flags |= ipc.FlagSignal + execOpts.Flags |= ipc.FlagCollectCover + execOpts.Flags &^= ipc.FlagDedupCover + } + if *flagHints { + if execOpts.Flags&ipc.FlagCollectCover != 0 { + execOpts.Flags ^= ipc.FlagCollectCover + } + execOpts.Flags |= ipc.FlagCollectComps + } + if *flagFaultCall >= 0 { + config.Flags |= ipc.FlagEnableFault + execOpts.Flags |= ipc.FlagInjectFault + execOpts.FaultCall = *flagFaultCall + execOpts.FaultNth = *flagFaultNth + } + handled := make(map[string]bool) + for _, entry := range entries { + for _, call := range entry.P.Calls { + handled[call.Meta.CallName] = true + } + } + if handled["syz_emit_ethernet"] || handled["syz_extract_tcp_res"] { + config.Flags |= ipc.FlagEnableTun + } + return config, execOpts +} |
