Coverage for /pythoncovmergedfiles/medio/medio/src/python-multipart/fuzz/fuzz_decoders.py: 46%
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 io
13import sys
15import atheris
16from helpers import EnhancedDataProvider
18with atheris.instrument_imports():
19 from multipart.decoders import Base64Decoder, DecodeError, QuotedPrintableDecoder
22def fuzz_base64_decoder(fdp: EnhancedDataProvider) -> None:
23 decoder = Base64Decoder(io.BytesIO())
24 decoder.write(fdp.ConsumeRandomBytes())
25 decoder.finalize()
28def fuzz_quoted_decoder(fdp: EnhancedDataProvider) -> None:
29 decoder = QuotedPrintableDecoder(io.BytesIO())
30 decoder.write(fdp.ConsumeRandomBytes())
31 decoder.finalize()
34def TestOneInput(data: bytes) -> None:
35 fdp = EnhancedDataProvider(data)
36 targets = [fuzz_base64_decoder, fuzz_quoted_decoder]
37 target = fdp.PickValueInList(targets)
39 try:
40 target(fdp)
41 except DecodeError:
42 return
45def main():
46 atheris.Setup(sys.argv, TestOneInput)
47 atheris.Fuzz()
50if __name__ == "__main__":
51 main()