From 1c7ec2d2c810e8dba823f2c90ef4230dc820e06c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 11 Apr 2022 13:44:41 +0200 Subject: [PATCH] shared/specifier: make sure we set the output variable even for void answers This doesn't change anything for real uses, because we'd initialize the variable to NULL for _cleanup_ anyway, but let's follow our general pattern of always setting the output on "success". (Even if that success is an empty answer here.) --- src/shared/specifier.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/shared/specifier.c b/src/shared/specifier.c index 16eb8830dc4..87b99d38bc6 100644 --- a/src/shared/specifier.c +++ b/src/shared/specifier.c @@ -276,12 +276,18 @@ int specifier_architecture(char specifier, const void *data, const char *root, c * installation. */ static int parse_os_release_specifier(const char *root, const char *id, char **ret) { + char *v = NULL; int r; assert(ret); + r = parse_os_release(root, id, &v); + if (r >= 0) + /* parse_os_release() calls parse_env_file() which only sets the return value for + * entries found. Let's make sure we set the return value in all cases. */ + *ret = v; + /* Translate error for missing os-release file to EUNATCH. */ - r = parse_os_release(root, id, ret); return r == -ENOENT ? -EUNATCH : r; } -- 2.47.3