From 67b4b7d490b901a494b62c3b44833a247eabfa34 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Sun, 2 Sep 2018 11:58:34 +0200 Subject: [PATCH] Handle :// as URL pattern --- doc/changelog.asciidoc | 1 + qutebrowser/utils/urlmatch.py | 4 +++- tests/unit/utils/test_urlmatch.py | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/doc/changelog.asciidoc b/doc/changelog.asciidoc index 8ffdc6a35..a8461c2bb 100644 --- a/doc/changelog.asciidoc +++ b/doc/changelog.asciidoc @@ -65,6 +65,7 @@ Fixed Note it still does not work on Qt 5.10 (due to a Qt bug) and Qt < 5.9.2. - Repeated escaping of entries in `qute://log` when refreshing page. - The host blocker doesn't block 0.0.0.0 anymore. +- Crash when using :// as URL pattern v1.4.1 ------ diff --git a/qutebrowser/utils/urlmatch.py b/qutebrowser/utils/urlmatch.py index 02db96e33..79e02c37f 100644 --- a/qutebrowser/utils/urlmatch.py +++ b/qutebrowser/utils/urlmatch.py @@ -142,7 +142,9 @@ class UrlPattern: Deviation from Chromium: - We assume * when no scheme has been given. """ - assert parsed.scheme, parsed + if not parsed.scheme: + raise ParseError("Missing scheme") + if parsed.scheme == 'any': self._scheme = None return diff --git a/tests/unit/utils/test_urlmatch.py b/tests/unit/utils/test_urlmatch.py index b77588469..e569c51b8 100644 --- a/tests/unit/utils/test_urlmatch.py +++ b/tests/unit/utils/test_urlmatch.py @@ -96,7 +96,7 @@ from qutebrowser.utils import urlmatch ("http://[fc2e:bb88:edac]", 'Invalid IPv6 address; source was "fc2e:bb88:edac"; host = ""'), ("http://[fc2e:bb88:edac::z]", 'Invalid IPv6 address; source was "fc2e:bb88:edac::z"; host = ""'), ("http://[fc2e:bb88:edac::2]:2a2", "Invalid port: invalid literal for int() with base 10: '2a2'"), - + ("://", "Missing scheme"), ]) def test_invalid_patterns(pattern, error): with pytest.raises(urlmatch.ParseError, match=re.escape(error)):