From ca97d716ffe32f32e70ff4debb7b2baa9b20df11 Mon Sep 17 00:00:00 2001 From: sg3-141-592 <5122866+sg3-141-592@users.noreply.github.com> Date: Mon, 20 Mar 2023 08:31:28 +0000 Subject: [PATCH] Fixing urllib3 port binding crash --- projects/urllib3/fuzz_requests.py | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/projects/urllib3/fuzz_requests.py b/projects/urllib3/fuzz_requests.py index c3dd2c7eb16f..664eb8bf03b4 100644 --- a/projects/urllib3/fuzz_requests.py +++ b/projects/urllib3/fuzz_requests.py @@ -16,12 +16,12 @@ import atheris from http.server import BaseHTTPRequestHandler, HTTPServer +import os +import random import sys import threading import time - -with atheris.instrument_imports(): - import urllib3 +import urllib3 timeout = urllib3.util.Timeout(connect=1.0, read=1.0) urllib_pool = urllib3.PoolManager(timeout=timeout) @@ -117,13 +117,22 @@ def TestOneInput(input_bytes): r.data r.headers - -if __name__ == "__main__": - x = threading.Thread(target=run_webserver, daemon=True) - x.start() +def main(): + # Try and get an open port to run our test web server + for attempt in range(10): + try: + PORT = random.randint(8000,9999) + x = threading.Thread(target=run_webserver, daemon=True) + x.start() + break + except OSError as e: + pass time.sleep(0.5) # Short delay to start test server - - atheris.Setup(sys.argv, TestOneInput) + atheris.instrument_all() + atheris.Setup(sys.argv, TestOneInput) atheris.Fuzz() + +if __name__ == "__main__": + main()