diff --git a/osbuild/util/osrelease.py b/osbuild/util/osrelease.py index b8d56e73..cc97faf5 100644 --- a/osbuild/util/osrelease.py +++ b/osbuild/util/osrelease.py @@ -5,6 +5,7 @@ related documentation can be found in `os-release(5)`. """ import os +import shlex # The default paths where os-release is located, as per os-release(5) DEFAULT_PATHS = [ @@ -33,7 +34,10 @@ def parse_files(*paths): if line[0] == "#": continue key, value = line.split("=", 1) - osrelease[key] = value.strip('"') + split_value = shlex.split(value) + if not split_value or len(split_value) > 1: + raise ValueError(f"Key '{key}' has an empty value or more than one token: {value}") + osrelease[key] = split_value[0] return osrelease diff --git a/test/data/os-release/fedora40 b/test/data/os-release/fedora40 new file mode 100644 index 00000000..7214dee8 --- /dev/null +++ b/test/data/os-release/fedora40 @@ -0,0 +1,22 @@ +NAME="Fedora Linux" +VERSION="40.20241106.dev.0 (CoreOS)" +ID=fedora +VERSION_ID=40 +VERSION_CODENAME="" +PLATFORM_ID="platform:f40" +PRETTY_NAME="Fedora CoreOS 40.20241106.dev.0" +ANSI_COLOR="0;38;2;60;110;180" +LOGO=fedora-logo-icon +CPE_NAME="cpe:/o:fedoraproject:fedora:40" +HOME_URL="https://getfedora.org/coreos/" +DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora-coreos/" +SUPPORT_URL="https://github.com/coreos/fedora-coreos-tracker/" +BUG_REPORT_URL="https://github.com/coreos/fedora-coreos-tracker/" +REDHAT_BUGZILLA_PRODUCT="Fedora" +REDHAT_BUGZILLA_PRODUCT_VERSION=40 +REDHAT_SUPPORT_PRODUCT="Fedora" +REDHAT_SUPPORT_PRODUCT_VERSION=40 +SUPPORT_END=2025-05-13 +VARIANT="CoreOS" +VARIANT_ID=coreos +OSTREE_VERSION='40.20241106.dev.0'