| #!/usr/bin/python |
| # |
| # Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. |
| # |
| # Licensed under the Apache License 2.0 (the "License"). You may not use |
| # this file except in compliance with the License. You can obtain a copy |
| # in the file LICENSE in the source distribution or at |
| # https://www.openssl.org/source/license.html |
| |
| """Fuzzing helper, creates and uses corpus/crash directories. |
| |
| fuzzer.py <fuzzer> <extra fuzzer arguments> |
| """ |
| |
| import os |
| import subprocess |
| import sys |
| |
| FUZZER = sys.argv[1] |
| |
| THIS_DIR = os.path.abspath(os.path.dirname(__file__)) |
| CORPORA_DIR = os.path.abspath(os.path.join(THIS_DIR, "corpora")) |
| |
| FUZZER_DIR = os.path.abspath(os.path.join(CORPORA_DIR, FUZZER)) |
| if not os.path.isdir(FUZZER_DIR): |
| os.mkdir(FUZZER_DIR) |
| |
| corpora = [] |
| |
| def _create(d): |
| dd = os.path.abspath(os.path.join(CORPORA_DIR, d)) |
| if not os.path.isdir(dd): |
| os.mkdir(dd) |
| corpora.append(dd) |
| |
| def _add(d): |
| dd = os.path.abspath(os.path.join(CORPORA_DIR, d)) |
| if os.path.isdir(dd): |
| corpora.append(dd) |
| |
| def main(): |
| _create(FUZZER) |
| _create(FUZZER + "-crash") |
| _add(FUZZER + "-seed") |
| |
| cmd = ([os.path.abspath(os.path.join(THIS_DIR, FUZZER))] + sys.argv[2:] |
| + ["-artifact_prefix=" + corpora[1] + "/"] + corpora) |
| print(" ".join(cmd)) |
| subprocess.call(cmd) |
| |
| if __name__ == "__main__": |
| main() |