Coverage for /pythoncovmergedfiles/medio/medio/src/pikepdf/fuzzing/pikepdf_fuzzer.py: 23%
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# SPDX-FileCopyrightText: 2024 ennamarie19
13# SPDX-License-Identifier: MIT
15import io
16import sys
17from contextlib import contextmanager
19import atheris
20from fuzz_helpers import EnhancedFuzzedDataProvider
22with atheris.instrument_imports(exclude=['pikepdf.settings']):
23 import pikepdf
24 from pikepdf import PdfError # type: ignore
27@contextmanager
28def silence():
29 so = sys.stdout
30 se = sys.stderr
31 sys.stdout = io.StringIO()
32 sys.stderr = io.StringIO()
33 yield
34 sys.stdout = so
35 sys.stderr = se
38def TestOneInput(data):
39 fdp = EnhancedFuzzedDataProvider(data)
40 try:
41 with fdp.ConsumeMemoryFile(all_data=True) as pdf_f, io.BytesIO() as out_f:
42 with pikepdf.Pdf.open(pdf_f) as my_pdf:
43 for page in my_pdf.pages:
44 page.rotate(180, relative=True)
45 my_pdf.save(out_f)
46 except PdfError:
47 return -1
48 except SystemError:
49 return -1
52def main():
53 atheris.Setup(sys.argv, TestOneInput)
54 atheris.Fuzz()
57if __name__ == "__main__":
58 main()