diff options
author | Abdullah Osama <abdullahosama15@gmail.com> | 2022-10-11 14:42:11 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-11 12:42:11 +0000 |
commit | a9934d48c193bc963e3d232ed83c5cbfa3e5152d (patch) | |
tree | 5d7e8a8f05164df5781491b399896f8685dd2611 | |
parent | Enable dependabot for Rust dependencies (#14132) (diff) | |
download | synapse-a9934d48c193bc963e3d232ed83c5cbfa3e5152d.tar.xz |
Making parse_server_name more consistent (#14007)
Fixes #12122
-rw-r--r-- | changelog.d/14007.misc | 1 | ||||
-rw-r--r-- | synapse/util/stringutils.py | 4 | ||||
-rw-r--r-- | tests/http/test_endpoint.py | 3 |
3 files changed, 6 insertions, 2 deletions
diff --git a/changelog.d/14007.misc b/changelog.d/14007.misc new file mode 100644 index 0000000000..3f0f3afe1c --- /dev/null +++ b/changelog.d/14007.misc @@ -0,0 +1 @@ +Make `parse_server_name` consistent in handling invalid server names. \ No newline at end of file diff --git a/synapse/util/stringutils.py b/synapse/util/stringutils.py index 27a363d7e5..4961fe9313 100644 --- a/synapse/util/stringutils.py +++ b/synapse/util/stringutils.py @@ -86,7 +86,7 @@ def parse_server_name(server_name: str) -> Tuple[str, Optional[int]]: ValueError if the server name could not be parsed. """ try: - if server_name[-1] == "]": + if server_name and server_name[-1] == "]": # ipv6 literal, hopefully return server_name, None @@ -123,7 +123,7 @@ def parse_and_validate_server_name(server_name: str) -> Tuple[str, Optional[int] # that nobody is sneaking IP literals in that look like hostnames, etc. # look for ipv6 literals - if host[0] == "[": + if host and host[0] == "[": if host[-1] != "]": raise ValueError("Mismatched [...] in server name '%s'" % (server_name,)) diff --git a/tests/http/test_endpoint.py b/tests/http/test_endpoint.py index c8cc21cadd..a801f002a0 100644 --- a/tests/http/test_endpoint.py +++ b/tests/http/test_endpoint.py @@ -25,6 +25,8 @@ class ServerNameTestCase(unittest.TestCase): "[0abc:1def::1234]": ("[0abc:1def::1234]", None), "1.2.3.4:1": ("1.2.3.4", 1), "[0abc:1def::1234]:8080": ("[0abc:1def::1234]", 8080), + ":80": ("", 80), + "": ("", None), } for i, o in test_data.items(): @@ -42,6 +44,7 @@ class ServerNameTestCase(unittest.TestCase): "newline.com\n", ".empty-label.com", "1234:5678:80", # too many colons + ":80", ] for i in test_data: try: |