Chromium Code Reviews| 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() |