Coverage for /pythoncovmergedfiles/medio/medio/src/websockets/fuzzing/fuzz_http11_request_parser.py: 44%
32 statements
« prev ^ index » next coverage.py v7.3.1, created at 2023-09-25 06:20 +0000
« prev ^ index » next coverage.py v7.3.1, created at 2023-09-25 06:20 +0000
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
17with atheris.instrument_imports():
18 from websockets.exceptions import SecurityError
19 from websockets.http11 import Request
20 from websockets.streams import StreamReader
23def test_one_input(data):
24 reader = StreamReader()
25 reader.feed_data(data)
26 reader.feed_eof()
28 parser = Request.parse(
29 reader.read_line,
30 )
32 try:
33 next(parser)
34 except StopIteration as exc:
35 assert isinstance(exc.value, Request)
36 return # input accepted
37 except (
38 EOFError, # connection is closed without a full HTTP request
39 SecurityError, # request exceeds a security limit
40 ValueError, # request isn't well formatted
41 ):
42 return # input rejected with a documented exception
44 raise RuntimeError("parsing didn't complete")
47def main():
48 atheris.Setup(sys.argv, test_one_input)
49 atheris.Fuzz()
52if __name__ == "__main__":
53 main()