From 6af5ac70648d8cdb4604b5bfae710f5fd47dda32 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Mon, 20 Apr 2020 22:50:16 +0200 Subject: Fix crash when parsing invalid /etc/os-release files --- doc/changelog.asciidoc | 2 ++ qutebrowser/utils/version.py | 2 +- tests/unit/utils/test_version.py | 9 +++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) 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' -- cgit v1.2.3-54-g00ecf