From: Lennart Poettering Date: Fri, 1 Mar 2024 13:45:37 +0000 (+0100) Subject: hostnamed: in get_hardware_firmware_data() don't dup a string if we shan't return it X-Git-Tag: v256-rc1~672^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cb0734d53f42cd6dfc4800cfaed5f070433b5da7;p=thirdparty%2Fsystemd.git hostnamed: in get_hardware_firmware_data() don't dup a string if we shan't return it --- diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c index ee2df8f2ff1..25e7b193cd1 100644 --- a/src/hostname/hostnamed.c +++ b/src/hostname/hostnamed.c @@ -249,7 +249,6 @@ static int get_hardware_model(char **ret) { static int get_hardware_firmware_data(const char *sysattr, char **ret) { _cleanup_(sd_device_unrefp) sd_device *device = NULL; - _cleanup_free_ char *b = NULL; const char *s = NULL; int r; @@ -263,16 +262,24 @@ static int get_hardware_firmware_data(const char *sysattr, char **ret) { return log_debug_errno(r, "Failed to open /sys/class/dmi/id device, ignoring: %m"); (void) sd_device_get_sysattr_value(device, sysattr, &s); - if (!isempty(s)) { - b = strdup(s); - if (!b) - return -ENOMEM; - } - if (ret) - *ret = TAKE_PTR(b); + bool empty = isempty(s); + + if (ret) { + if (empty) + *ret = NULL; + else { + _cleanup_free_ char *b = NULL; + + b = strdup(s); + if (!b) + return -ENOMEM; + + *ret = TAKE_PTR(b); + } + } - return !isempty(s); + return !empty; } static int get_hardware_serial(char **ret) {