]> git.ipfire.org Git - thirdparty/httpx.git/commitdiff
Fix encode host (#2886)
authorrobinaly <robin@aly.de>
Tue, 10 Oct 2023 11:03:47 +0000 (13:03 +0200)
committerGitHub <noreply@github.com>
Tue, 10 Oct 2023 11:03:47 +0000 (12:03 +0100)
* Fix requiring dot literal rather than any character in IPv4

* Add check to prevent future errors

httpx/_urlparse.py
tests/test_urlparse.py

index e1ba8dcdb76f3d304992b4265ec826d0bf24dac7..8e060424e89c8c8d5338f3758490f5e649c55c4f 100644 (file)
@@ -87,7 +87,7 @@ COMPONENT_REGEX = {
 
 # We use these simple regexs as a first pass before handing off to
 # the stdlib 'ipaddress' module for IP address validation.
-IPv4_STYLE_HOSTNAME = re.compile(r"^[0-9]+.[0-9]+.[0-9]+.[0-9]+$")
+IPv4_STYLE_HOSTNAME = re.compile(r"^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$")
 IPv6_STYLE_HOSTNAME = re.compile(r"^\[.*\]$")
 
 
index 3ae9b04ce6e2b0ef2ce9b3f1dcb806dbcb37037f..b03291b44f6c5c6cb19f6a844c8f4bde9cbaafb4 100644 (file)
@@ -45,6 +45,12 @@ def test_urlparse_normalized_host():
     assert url.host == "example.com"
 
 
+def test_urlparse_ipv4_like_host():
+    """rare host names used to quality as IPv4"""
+    url = httpx.URL("https://023b76x43144/")
+    assert url.host == "023b76x43144"
+
+
 def test_urlparse_valid_ipv4():
     url = httpx.URL("https://1.2.3.4/")
     assert url.host == "1.2.3.4"