def main(self): """ Run the search. Return True if ok, False otherwise. """ # Initialize self.mainHeader() # Prepare search main_error = False try: # Run search limitedMemory(MEMORY_LIMIT, self.searchSubfiles) except KeyboardInterrupt: print >> stderr, "[!] Program interrupted (CTRL+C)" main_error = True except MemoryError: main_error = True print >> stderr, "[!] Memory error!" self.mainFooter() return not (main_error)
def fuzzFile(self, fuzz): failure = False while fuzz.nb_extract < MAX_NB_EXTRACT: if SLEEP_SEC: sleep(SLEEP_SEC) self.log_error = 0 fatal_error = False try: failure = limitedMemory(MEMORY_LIMIT, fuzz.extract) prefix = fuzz.prefix except KeyboardInterrupt: try: failure = ( raw_input("Keep current file (y/n)?").strip() == "y") except (KeyboardInterrupt, EOFError): print failure = False prefix = "interrupt" fatal_error = True except MemoryError: print "MEMORY ERROR!" failure = True prefix = "memory" except Exception, err: print "EXCEPTION (%s): %s" % (err.__class__.__name__, err) failure = True prefix = "exception" if fatal_error: break if failure is None: if fuzz.tryUndo(): failure = False elif fuzz.is_original: print " Warning: Unsupported file format: remove %s from test suite" % fuzz.filename self.filedb.remove(fuzz.filename) return True if failure is None: break if failure: break if fuzz.acceptTruncate(): if randint(0, TRUNCATE_RATE - 1) == 0: fuzz.truncate() else: fuzz.mangle() else: fuzz.mangle()
def fuzzFile(self, fuzz): failure = False while fuzz.nb_extract < MAX_NB_EXTRACT: if SLEEP_SEC: sleep(SLEEP_SEC) self.log_error = 0 fatal_error = False try: failure = limitedMemory(MEMORY_LIMIT, fuzz.extract) prefix = fuzz.prefix except KeyboardInterrupt: try: failure = raw_input("Keep current file (y/n)?").strip() == "y" except (KeyboardInterrupt, EOFError): print failure = False prefix = "interrupt" fatal_error = True except MemoryError: print "MEMORY ERROR!" failure = True prefix = "memory" except Exception, err: print "EXCEPTION (%s): %s" % (err.__class__.__name__, err) failure = True prefix = "exception" if fatal_error: break if failure is None: if fuzz.tryUndo(): failure = False elif fuzz.is_original: print " Warning: Unsupported file format: remove %s from test suite" % fuzz.filename self.filedb.remove(fuzz.filename) return True if failure is None: break if failure: break if fuzz.acceptTruncate(): if randint(0, TRUNCATE_RATE - 1) == 0: fuzz.truncate() else: fuzz.mangle() else: fuzz.mangle()