From 1835626e4e0b5b19172875fa8f18b11fd80b3b3c Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Wed, 10 May 2023 11:56:03 +0200 Subject: tools/syz-hubtool: support glob pattern for corpus progs Support not only a single corpus file, but also a glob pattern for corpus programs. --- tools/syz-hubtool/hubtool.go | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) (limited to 'tools') diff --git a/tools/syz-hubtool/hubtool.go b/tools/syz-hubtool/hubtool.go index 69175b469..9789639db 100644 --- a/tools/syz-hubtool/hubtool.go +++ b/tools/syz-hubtool/hubtool.go @@ -22,16 +22,17 @@ import ( func main() { var ( - flagOS = flag.String("os", runtime.GOOS, "target OS") - flagArch = flag.String("arch", runtime.GOARCH, "target Arch") - flagHubAddress = flag.String("addr", "", "hub address") - flagHubClient = flag.String("client", "", "hub API client") - flagHubKey = flag.String("key", "", "hub API key") - flagHubManager = flag.String("manager", "", "manager name to upload on behalf of") - flagRepro = flag.String("repro", "", "reproducer glob pattern to upload") - flagCorpus = flag.String("corpus", "", "coprpus file to upload") - flagWorkdir = flag.String("workdir", "", "workdir to upload coprpus and reproducers") - flagDrain = flag.Bool("drain", false, "drain hub corpus and reproducers for the given manager") + flagOS = flag.String("os", runtime.GOOS, "target OS") + flagArch = flag.String("arch", runtime.GOARCH, "target Arch") + flagHubAddress = flag.String("addr", "", "hub address") + flagHubClient = flag.String("client", "", "hub API client") + flagHubKey = flag.String("key", "", "hub API key") + flagHubManager = flag.String("manager", "", "manager name to upload on behalf of") + flagRepro = flag.String("repro", "", "reproducer glob pattern to upload") + flagCorpus = flag.String("corpus", "", "coprpus file to upload") + flagCorpusProgs = flag.String("corpus_progs", "", "a glob pattern of progs to add to corpus") + flagWorkdir = flag.String("workdir", "", "workdir to upload coprpus and reproducers") + flagDrain = flag.Bool("drain", false, "drain hub corpus and reproducers for the given manager") ) flag.Parse() target, err := prog.GetTarget(*flagOS, *flagArch) @@ -44,10 +45,12 @@ func main() { } var repros, corpus [][]byte if *flagRepro != "" { - repros = loadRepros(target, *flagRepro) + repros = loadProgs(target, *flagRepro) } if *flagCorpus != "" { corpus = loadCorpus(target, *flagCorpus) + } else if *flagCorpusProgs != "" { + corpus = loadProgs(target, *flagCorpusProgs) } log.Printf("loaded %v reproducers, %v corpus programs", len(repros), len(corpus)) if len(repros)+len(corpus) == 0 && !*flagDrain { @@ -111,7 +114,7 @@ func main() { } } -func loadRepros(target *prog.Target, reproGlob string) [][]byte { +func loadProgs(target *prog.Target, reproGlob string) [][]byte { files, err := filepath.Glob(reproGlob) if err != nil { log.Fatal(err) -- cgit mrf-deployment