From f451c68667cca8a1883ceddb66dd2834b18252a8 Mon Sep 17 00:00:00 2001 From: Vyacheslav Yurkov Date: Thu, 30 Apr 2020 16:03:40 +0200 Subject: os-release: sanitize required fields Currently only VERSION_ID field is sanitized, but os-release (5) has more fields with the same requirement. Moreover, those fields come unquoted in most distributions, because quotes are not needed for a values without whitespaces. Signed-off-by: Vyacheslav Yurkov Signed-off-by: Richard Purdie --- meta/recipes-core/os-release/os-release.bb | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'meta/recipes-core') diff --git a/meta/recipes-core/os-release/os-release.bb b/meta/recipes-core/os-release/os-release.bb index d5793c6fed..a29d678125 100644 --- a/meta/recipes-core/os-release/os-release.bb +++ b/meta/recipes-core/os-release/os-release.bb @@ -13,6 +13,7 @@ do_configure[noexec] = "1" # Other valid fields: BUILD_ID ID_LIKE ANSI_COLOR CPE_NAME # HOME_URL SUPPORT_URL BUG_REPORT_URL OS_RELEASE_FIELDS = "ID ID_LIKE NAME VERSION VERSION_ID PRETTY_NAME" +OS_RELEASE_UNQUOTED_FIELDS = "ID VERSION_ID VARIANT_ID" ID = "${DISTRO}" NAME = "${DISTRO_NAME}" @@ -22,8 +23,8 @@ PRETTY_NAME = "${DISTRO_NAME} ${VERSION}" BUILD_ID ?= "${DATETIME}" BUILD_ID[vardepsexclude] = "DATETIME" -def sanitise_version(ver): - # VERSION_ID should be (from os-release(5)): +def sanitise_value(ver): + # unquoted fields like VERSION_ID should be (from os-release(5)): # lower-case string (mostly numeric, no spaces or other characters # outside of 0-9, a-z, ".", "_" and "-") ret = ver.replace('+', '-').replace(' ','_') @@ -32,11 +33,14 @@ def sanitise_version(ver): python do_compile () { with open(d.expand('${B}/os-release'), 'w') as f: for field in d.getVar('OS_RELEASE_FIELDS').split(): + unquotedFields = d.getVar('OS_RELEASE_UNQUOTED_FIELDS').split() value = d.getVar(field) - if value and field == 'VERSION_ID': - value = sanitise_version(value) if value: - f.write('{0}="{1}"\n'.format(field, value)) + if field in unquotedFields: + value = sanitise_value(value) + f.write('{0}={1}\n'.format(field, value)) + else: + f.write('{0}="{1}"\n'.format(field, value)) } do_compile[vardeps] += "${OS_RELEASE_FIELDS}" -- cgit 1.2.3-korg