Skip to content

Commit

Permalink
Add abort token support to CorpusManager
Browse files Browse the repository at this point in the history
  • Loading branch information
tysmith committed Jul 22, 2017
1 parent 1ec5fd4 commit fbd60bd
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 0 deletions.
5 changes: 5 additions & 0 deletions corpman/corpman.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ class CorpusManager(object):
key = None # this must be overloaded in the subclass

def __init__(self, path, accepted_extensions=None):
self.abort_tokens = list() # tokens that when added to the log with trigger an abort
self.input_files = list() # fuzzed test cases will be based on these files
self.launch_count = 0 # number of times the browser has been launched
self.rotation_period = 10 # input file rotation period
Expand Down Expand Up @@ -252,6 +253,10 @@ def to_data_url(data, mime_type=None):
return "data:%s;base64,%s" % (mime_type, base64.standard_b64encode(data))


def add_abort_token(self, tokens):
self.abort_tokens.append(tokens)


def add_required_envvar(self, var_name, value=""):
var_name = var_name.upper()
# grab currently set value if available
Expand Down
3 changes: 3 additions & 0 deletions corpman/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ def _generate(self, testcase, redirect_page, mime_type=None):

class SimpleCorpman(corpman.CorpusManager):
key = "simple"
def _init_fuzzer(self):
self.add_abort_token("ABORT_TOKEN")
def _generate(self, testcase, redirect_page, mime_type=None):
testcase.add_testfile(corpman.TestFile(testcase.landing_page, redirect_page))
return testcase
Expand Down Expand Up @@ -57,6 +59,7 @@ def test_0(self):
self.assertEqual(cm.landing_page(), "test_page_0000.html")
self.assertEqual(cm.landing_page(transition=True), "next_test")
self.assertEqual(cm.launch_count, 0) # should default to 0 and be incremented by grizzly.py
self.assertIn("ABORT_TOKEN", cm.abort_tokens)
finally:
if os.path.isdir(corp_dir):
shutil.rmtree(corp_dir)
Expand Down
4 changes: 4 additions & 0 deletions grizzly.py
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,10 @@ def main(args):
if args.asserts:
ffp.add_abort_token("###!!! ASSERTION:")

# add tokens from corpus manager
for token in corp_man.abort_tokens:
ffp.add_abort_token(token)

# main fuzzing iteration loop
while True:
status.report()
Expand Down

0 comments on commit fbd60bd

Please sign in to comment.