Add fuzzing!
[openssl.git] / fuzz / helper.py
1 #!/usr/bin/python
2
3 """Fuzzing helper, creates and uses corpus/crash directories.
4
5 fuzzer.py <fuzzer> <extra fuzzer arguments>
6 """
7
8 import os
9 import subprocess
10 import sys
11
12 FUZZER = sys.argv[1]
13
14 THIS_DIR = os.path.abspath(os.path.dirname(__file__))
15 CORPORA_DIR = os.path.abspath(os.path.join(THIS_DIR, "corpora"))
16
17 FUZZER_DIR = os.path.abspath(os.path.join(CORPORA_DIR, FUZZER))
18 if not os.path.isdir(FUZZER_DIR):
19     os.mkdir(FUZZER_DIR)
20
21 corpora = []
22
23 def _create(d):
24     dd = os.path.abspath(os.path.join(CORPORA_DIR, d))
25     if not os.path.isdir(dd):
26         os.mkdir(dd)
27     corpora.append(dd)
28
29 def _add(d):
30     dd = os.path.abspath(os.path.join(CORPORA_DIR, d))
31     if os.path.isdir(dd):
32         corpora.append(dd)
33
34 def main():
35     _create(FUZZER)
36     _create(FUZZER + "-crash")
37     _add(FUZZER + "-seed")
38
39     cmd = ([os.path.abspath(os.path.join(THIS_DIR, FUZZER))]  + sys.argv[2:]
40            + ["-artifact_prefix=" + corpora[1] + "/"] + corpora)
41     print " ".join(cmd)
42     subprocess.call(cmd)
43
44 if __name__ == "__main__":
45     main()