| 
									
										
										
										
											2016-03-27 01:19:14 +08:00
										 |  |  | #!/usr/bin/python | 
					
						
							| 
									
										
										
										
											2016-06-01 23:26:40 +08:00
										 |  |  | # | 
					
						
							|  |  |  | # Copyright 2016 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 | 
					
						
							| 
									
										
										
										
											2016-03-27 01:19:14 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | """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() |