summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <git@the-compiler.org>2018-08-31 16:48:45 +0200
committerFlorian Bruhin <git@the-compiler.org>2018-08-31 16:49:27 +0200
commitb76c50d7fab80780a25e3c17f5d39abe60dd0940 (patch)
tree58acf0e8691562c3155fd57a2c6c14bb932533b6
parent943b0909d5b88ee02fe2f7bd2f4c0e1b440b6dfc (diff)
downloadqutebrowser-b76c50d7fab80780a25e3c17f5d39abe60dd0940.tar.gz
qutebrowser-b76c50d7fab80780a25e3c17f5d39abe60dd0940.zip
Make sure the host blocker doesn't block 0.0.0.0
(cherry picked from commit 1815070dab8b2fccbdf27ff0259f88723914e925)
-rw-r--r--qutebrowser/browser/adblock.py4
-rw-r--r--tests/unit/browser/test_adblock.py27
2 files changed, 30 insertions, 1 deletions
diff --git a/qutebrowser/browser/adblock.py b/qutebrowser/browser/adblock.py
index f42d1a1db..affd80eaf 100644
--- a/qutebrowser/browser/adblock.py
+++ b/qutebrowser/browser/adblock.py
@@ -234,7 +234,9 @@ class HostBlocker:
hosts = parts[1:]
for host in hosts:
- if '.' in host and not host.endswith('.localdomain'):
+ if ('.' in host and
+ not host.endswith('.localdomain') and
+ host != '0.0.0.0'):
self._blocked_hosts.add(host)
return True
diff --git a/tests/unit/browser/test_adblock.py b/tests/unit/browser/test_adblock.py
index 8ab3b930d..e4e7a0eda 100644
--- a/tests/unit/browser/test_adblock.py
+++ b/tests/unit/browser/test_adblock.py
@@ -259,6 +259,33 @@ def test_parsing_multiple_hosts_on_line(config_stub, basedir, download_stub,
assert_urls(host_blocker, whitelisted=[])
+@pytest.mark.parametrize('ip, host', [
+ ('127.0.0.1', 'localhost'),
+ ('27.0.0.1', 'localhost.localdomain'),
+ ('27.0.0.1', 'local'),
+ ('55.255.255.255', 'broadcasthost'),
+ (':1', 'localhost'),
+ (':1', 'ip6-localhost'),
+ (':1', 'ip6-loopback'),
+ ('e80::1%lo0', 'localhost'),
+ ('f00::0', 'ip6-localnet'),
+ ('f00::0', 'ip6-mcastprefix'),
+ ('f02::1', 'ip6-allnodes'),
+ ('f02::2', 'ip6-allrouters'),
+ ('ff02::3', 'ip6-allhosts'),
+ ('.0.0.0', '0.0.0.0'),
+ ('127.0.1.1', 'myhostname'),
+ ('127.0.0.53', 'myhostname'),
+])
+def test_whitelisted_lines(config_stub, basedir, download_stub, data_tmpdir,
+ tmpdir, win_registry, caplog, ip, host):
+ """Make sure we don't block hosts we don't want to."""
+ host_blocker = adblock.HostBlocker()
+ line = ('{} {}'.format(ip, host)).encode('ascii')
+ host_blocker._parse_line(line)
+ assert host not in host_blocker._blocked_hosts
+
+
def test_failed_dl_update(config_stub, basedir, download_stub,
data_tmpdir, tmpdir, win_registry, caplog):
"""One blocklist fails to download.