From b76c50d7fab80780a25e3c17f5d39abe60dd0940 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Fri, 31 Aug 2018 16:48:45 +0200 Subject: Make sure the host blocker doesn't block 0.0.0.0 (cherry picked from commit 1815070dab8b2fccbdf27ff0259f88723914e925) --- qutebrowser/browser/adblock.py | 4 +++- tests/unit/browser/test_adblock.py | 27 +++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) 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. -- cgit v1.2.3-54-g00ecf