| #!/usr/bin/python | 
 | # | 
 | # Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. | 
 | # | 
 | # Licensed under the OpenSSL license (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() |