From 484a22f1119330367b194c086458b4f17dded244 Mon Sep 17 00:00:00 2001 From: Jesko Date: Wed, 8 Aug 2018 17:53:14 +0200 Subject: [PATCH] now declining more wrong ipv6 addresses and cleaning up code --- qutebrowser/utils/urlmatch.py | 9 ++++++--- tests/unit/utils/test_urlmatch.py | 3 ++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/qutebrowser/utils/urlmatch.py b/qutebrowser/utils/urlmatch.py index f8e06fb06..4b6b9aa83 100644 --- a/qutebrowser/utils/urlmatch.py +++ b/qutebrowser/utils/urlmatch.py @@ -29,9 +29,10 @@ import ipaddress import fnmatch import urllib.parse -from qutebrowser.utils import utils, qtutils from PyQt5.QtCore import QUrl +from qutebrowser.utils import utils, qtutils + class ParseError(Exception): @@ -178,10 +179,12 @@ class UrlPattern: assert self._host is None return - if not utils.raises(ValueError, ipaddress.IPv6Address, parsed.netloc[1:-1]): + if parsed.netloc.startswith('['): # Using QUrl parsing to minimize ipv6 addresses url = QUrl() - url.setHost(parsed.hostname) + url.setHost("[" + parsed.hostname + "]") + if url.host() == "": + raise ParseError("Invalid IPv6 URL"+parsed.hostname) self._host = url.host() return diff --git a/tests/unit/utils/test_urlmatch.py b/tests/unit/utils/test_urlmatch.py index 1dadc2cab..b8ab4ace1 100644 --- a/tests/unit/utils/test_urlmatch.py +++ b/tests/unit/utils/test_urlmatch.py @@ -84,7 +84,8 @@ from qutebrowser.utils import urlmatch # Additional tests ("http://[", "Invalid IPv6 URL"), - ("http://[fc2e::bb88::edac]:", "Invalid port: Port is empty"), + ("http://[fc2e:bb88::edac]:", "Invalid port: Port is empty"), + ("http://[fc2e::bb88::edac]", "Invalid IPv6 URL"), ("http://[fc2e:0e35:bb88::edac:fc2e:0e35:bb88:edac]", "Invalid IPv6 URL"), ("http://[fc2e:0e35:bb88:af:edac:fc2e:0e35:bb88:edac]", "Invalid IPv6 URL"), ("http://[127.0.0.1:fc2e::bb88:edac]", "Invalid IPv6 URL"),