Coverage for /pythoncovmergedfiles/medio/medio/src/python-multipart/fuzz/fuzz_options_header.py: 28%
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 logging
13import sys
15logging.disable(logging.CRITICAL)
17import atheris
18from helpers import EnhancedDataProvider
20with atheris.instrument_imports():
21 from python_multipart.multipart import parse_options_header
24def fuzz_bytes_input(fdp: EnhancedDataProvider) -> None:
25 # WSGI: bytes received from the network, decoded as latin-1 inside the function.
26 parse_options_header(fdp.ConsumeRandomBytes())
29def fuzz_string_input(fdp: EnhancedDataProvider) -> None:
30 # Simulate a caller that already decoded the header value as latin-1.
31 raw = fdp.ConsumeRandomBytes()
32 parse_options_header(raw.decode("latin-1"))
35def fuzz_none_input(fdp: EnhancedDataProvider) -> None:
36 parse_options_header(None)
39def TestOneInput(data: bytes) -> None:
40 fdp = EnhancedDataProvider(data)
41 target = fdp.PickValueInList([fuzz_bytes_input, fuzz_string_input, fuzz_none_input])
42 target(fdp)
45def main():
46 atheris.Setup(sys.argv, TestOneInput)
47 atheris.Fuzz()
50if __name__ == "__main__":
51 main()