Index: testing/libfuzzer/gen_fuzzer_runner.py |
diff --git a/testing/libfuzzer/gen_fuzzer_runner.py b/testing/libfuzzer/gen_fuzzer_runner.py |
index 516bd6485068e40f1a19a226535f6122eb5e03ee..306cb5bf4fd813a1569df936c6039cd1334f58ea 100755 |
--- a/testing/libfuzzer/gen_fuzzer_runner.py |
+++ b/testing/libfuzzer/gen_fuzzer_runner.py |
@@ -14,18 +14,46 @@ import os |
import sys |
-parser = argparse.ArgumentParser(description="Generate fuzzer launcher.") |
-parser.add_argument('--fuzzer', required=True) |
-parser.add_argument('--launcher', required=True) |
-parser.add_argument('--dict', required=True) |
-args = parser.parse_args() |
- |
-out = open(args.launcher, 'w') |
-out.write("""#!/bin/bash |
+LAUNCHER_TEMPLATE = """#!/bin/bash |
set -ue |
DIR=$(dirname $0) |
-$DIR/%(fuzzer)s -dict=$DIR/%(dict)s $* |
-""" % { "fuzzer": args.fuzzer, "dict": args.dict }) |
-out.close() |
+$DIR/%(fuzzer)s %(arguments)s |
+""" |
+ |
+ |
+def buildFuzzerArguments(args): |
Oliver Chang
2016/02/18 22:31:42
nit: follow chromium python style guide (https://w
|
+ fuzzer_arguments = "" |
+ if args.dict: |
+ fuzzer_arguments += "-dict=$DIR/%(dict)s " % { "dict": args.dict } |
+ |
+ fuzzer_arguments += "$*" |
+ |
+ # Put custom parameters after $* to overwrite default values from ClusterFuzz. |
Oliver Chang
2016/02/18 22:31:42
Why do we want to override values from ClusterFuzz
|
+ if args.params: |
+ fuzzer_arguments += " %(params)s" % { "params": args.params[1 : -1]} |
Oliver Chang
2016/02/18 22:31:42
why is the quoting in fuzzer_test.gni necessary if
|
+ |
+ return fuzzer_arguments |
+ |
+ |
+def main(): |
+ parser = argparse.ArgumentParser(description="Generate fuzzer launcher.") |
+ parser.add_argument('--fuzzer', required=True) |
+ parser.add_argument('--launcher', required=True) |
+ parser.add_argument('--dict', required=False) |
+ parser.add_argument('--params', required=False) |
+ args = parser.parse_args() |
+ |
+ fuzzer_arguments = buildFuzzerArguments(args) |
+ |
+ launcher_source_code = LAUNCHER_TEMPLATE % {"fuzzer": args.fuzzer, |
+ "arguments": fuzzer_arguments} |
+ |
+ out = open(args.launcher, 'w') |
+ out.write(launcher_source_code) |
+ out.close() |
+ |
+ os.chmod(args.launcher, os.stat(args.launcher).st_mode | 0o111) # chmod a+x |
+ |
-os.chmod(args.launcher, os.stat(args.launcher).st_mode | 0o111) # chmod a+x |
+if __name__ == '__main__': |
+ main() |