summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2020-04-20 22:50:16 +0200
committerFlorian Bruhin <me@the-compiler.org>2020-04-20 22:50:16 +0200
commit6af5ac70648d8cdb4604b5bfae710f5fd47dda32 (patch)
treeadb107a60bd5493bfa4bac33578724fe6d1162b3
parent2b72ec5302bfe57036688b77d99ca0fc92cba7cd (diff)
downloadqutebrowser-6af5ac70648d8cdb4604b5bfae710f5fd47dda32.tar.gz
qutebrowser-6af5ac70648d8cdb4604b5bfae710f5fd47dda32.zip
Fix crash when parsing invalid /etc/os-release files
-rw-r--r--doc/changelog.asciidoc2
-rw-r--r--qutebrowser/utils/version.py2
-rw-r--r--tests/unit/utils/test_version.py9
3 files changed, 12 insertions, 1 deletions
diff --git a/doc/changelog.asciidoc b/doc/changelog.asciidoc
index 94623ce0a..3406c02c4 100644
--- a/doc/changelog.asciidoc
+++ b/doc/changelog.asciidoc
@@ -60,6 +60,8 @@ Fixed
match the original Greasemonkey implementation.
- The `--output-messages` (`-m`) flag added in v1.9.0 now also works correctly
when using `:spawn --userscript`.
+- `:version` and `--version` now don't crash if there's an (invalid)
+ `/etc/os-release` file which has non-comment lines without a `=` character.
v1.10.2 (2020-04-17)
--------------------
diff --git a/qutebrowser/utils/version.py b/qutebrowser/utils/version.py
index 1a870f572..d10c57411 100644
--- a/qutebrowser/utils/version.py
+++ b/qutebrowser/utils/version.py
@@ -90,7 +90,7 @@ def distribution() -> typing.Optional[DistributionInfo]:
with open(filename, 'r', encoding='utf-8') as f:
for line in f:
line = line.strip()
- if (not line) or line.startswith('#'):
+ if (not line) or line.startswith('#') or '=' not in line:
continue
k, v = line.split("=", maxsplit=1)
info[k] = v.strip('"')
diff --git a/tests/unit/utils/test_version.py b/tests/unit/utils/test_version.py
index 42a6332e2..0a3c5e4aa 100644
--- a/tests/unit/utils/test_version.py
+++ b/tests/unit/utils/test_version.py
@@ -196,6 +196,15 @@ from qutebrowser.browser import pdfjs
version.DistributionInfo(
id='tux', parsed=version.Distribution.unknown,
version=None, pretty='Tux')),
+ # Invalid multi-line value
+ ("""
+ ID=tux
+ PRETTY_NAME="Multiline
+ Text"
+ """,
+ version.DistributionInfo(
+ id='tux', parsed=version.Distribution.unknown,
+ version=None, pretty='Multiline')),
])
def test_distribution(tmpdir, monkeypatch, os_release, expected):
os_release_file = tmpdir / 'os-release'