Go to the documentation of this file.00001
00002
00003 import sys
00004 import os
00005 import subprocess
00006
00007 iterations = 100
00008 fuzzy_ratio = 0.01
00009
00010
00011 if __name__ == "__main__":
00012
00013 asebatest_bin = None
00014 input_script = None
00015 if len(sys.argv) in [3, 4]:
00016 asebatest_bin = sys.argv[1]
00017 input_script = sys.argv[2]
00018 if len(sys.argv) == 4:
00019 iterations = int(sys.argv[3])
00020 else:
00021 print >> sys.stderr, "Wrong number of arguments.\n"
00022 print >> sys.stderr, "Usage:"
00023 print >> sys.stderr, " {} asebatest_bin input_script".format(sys.argv[0])
00024 exit(1)
00025
00026 try:
00027 f = open(input_script, 'rb')
00028 except IOError, e:
00029 print "Can not find the script file {}. Error.".format(input_script)
00030 exit(2)
00031
00032
00033 script = f.read()
00034 f.close()
00035
00036
00037 failed = False
00038 for s in range(0,iterations):
00039
00040 retcode = subprocess.call(["zzuf", "-P", r"\n", "-R", r"\x00-\x1f\x7f-\xff", "-r".format(fuzzy_ratio), "-s", str(s), asebatest_bin, input_script], \
00041 stdout=open(os.devnull), stderr=open(os.devnull))
00042 if retcode == 1:
00043
00044 print >> sys.stderr, "Compiler crached when fuzzing the input script."
00045 print >> sys.stderr, "Faulty script is generated with the seed (-s) {}:".format(s)
00046 subprocess.call(["zzuf", "-P", r"\n", "-R", r"\x00-\x1f\x7f-\xff", "-r{}".format(fuzzy_ratio), "-s", str(s), "cat", input_script])
00047 failed = True
00048 break
00049
00050 if failed == True:
00051 exit(3)
00052 else:
00053 exit(0)
00054