Coverage for /pythoncovmergedfiles/medio/medio/src/pdfminer.six/fuzzing/extract_text_fuzzer.py: 30%
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
12import sys
14import atheris
16from fuzzing.fuzzed_data_provider import PdfminerFuzzedDataProvider
18with atheris.instrument_imports():
19 from fuzzing.utils import (
20 generate_layout_parameters,
21 is_valid_byte_stream,
22 prepare_pdfminer_fuzzing,
23 )
24 from pdfminer.high_level import extract_text
26from 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 extract_text(
38 fdp.ConsumeMemoryFile(),
39 maxpages=fdp.ConsumeIntInRange(0, 10),
40 page_numbers=fdp.ConsumeOptionalIntList(10, 0, 10),
41 laparams=generate_layout_parameters(fdp),
42 )
43 except (AssertionError, PSException):
44 return
47if __name__ == "__main__":
48 prepare_pdfminer_fuzzing()
49 atheris.Setup(sys.argv, fuzz_one_input)
50 atheris.Fuzz()