diff options
Diffstat (limited to 'tests/analysis/scan/fuzzing.py')
| -rw-r--r-- | tests/analysis/scan/fuzzing.py | 34 | 
1 files changed, 34 insertions, 0 deletions
| diff --git a/tests/analysis/scan/fuzzing.py b/tests/analysis/scan/fuzzing.py new file mode 100644 index 0000000..64eeb33 --- /dev/null +++ b/tests/analysis/scan/fuzzing.py @@ -0,0 +1,34 @@ + +from chrysacase import ChrysalideTestCase +from pychrysalide.analysis.contents import MemoryContent +from pychrysalide.analysis.scan import ContentScanner +from pychrysalide.analysis.scan import ScanOptions +from pychrysalide.analysis.scan.patterns.backends import AcismBackend +from pychrysalide.analysis.scan.patterns.backends import BitapBackend + + +class TestRostFuzzingFixes(ChrysalideTestCase): +    """TestCases to remember all the fixes for crashes identified by fuzzing.""" + +    def testEmptyPatternListWithContent(self): +        """Check no backend is run if there is no pattern to look for.""" + +        content = MemoryContent(b'\n') + +        rule = ''' +''' + +        backends = [ +            AcismBackend, # This one was segfaulting +            BitapBackend, +        ] + +        for b in backends: + +            options = ScanOptions() +            options.backend_for_data = b + +            scanner = ContentScanner(rule) +            ctx = scanner.analyze(options, content) + +            self.assertIsNotNone(ctx) | 
