Coverage for /pythoncovmergedfiles/medio/medio/src/pdfminer.six/fuzzing/page_extraction_fuzzer.py: 32%
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1###### Coverage stub
2import atexit
3import coverage
4cov = coverage.coverage(data_file='.coverage', cover_pylib=True)
5cov.start()
6# Register an exist handler that will print coverage
7def exit_handler():
8 cov.stop()
9 cov.save()
10atexit.register(exit_handler)
11####### End of coverage stub
12#!/usr/bin/env python3
13import sys
15import atheris
17from fuzzing.fuzzed_data_provider import PdfminerFuzzedDataProvider
19with atheris.instrument_imports():
20 from fuzzing.utils import (
21 generate_layout_parameters,
22 is_valid_byte_stream,
23 prepare_pdfminer_fuzzing,
24 )
25 from pdfminer.high_level import extract_pages
26 from pdfminer.psexceptions import PSException
29def fuzz_one_input(data: bytes) -> None:
30 if not is_valid_byte_stream(data):
31 # Not worth continuing with this test case
32 return
34 fdp = PdfminerFuzzedDataProvider(data)
36 try:
37 with fdp.ConsumeMemoryFile() as f:
38 list(
39 extract_pages(
40 f,
41 maxpages=fdp.ConsumeIntInRange(0, 10),
42 page_numbers=fdp.ConsumeOptionalIntList(10, 0, 10),
43 laparams=generate_layout_parameters(fdp),
44 ),
45 )
46 except (AssertionError, PSException):
47 return
50if __name__ == "__main__":
51 prepare_pdfminer_fuzzing()
52 atheris.Setup(sys.argv, fuzz_one_input)
53 atheris.Fuzz()