diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c index 55a0ee730e..9c4743f055 100644 --- a/src/libsystemd/sd-device/sd-device.c +++ b/src/libsystemd/sd-device/sd-device.c @@ -2332,9 +2332,14 @@ _public_ int sd_device_get_sysattr_value(sd_device *device, const char *sysattr, sysattr, value, ret_value ? "" : ", ignoring"); if (ret_value) return r; - } else if (ret_value) - *ret_value = TAKE_PTR(value); + return 0; + } + + if (ret_value) + *ret_value = value; + + TAKE_PTR(value); return 0; } diff --git a/src/libsystemd/sd-device/test-sd-device.c b/src/libsystemd/sd-device/test-sd-device.c index 32ee670701..2bb9c28788 100644 --- a/src/libsystemd/sd-device/test-sd-device.c +++ b/src/libsystemd/sd-device/test-sd-device.c @@ -180,15 +180,16 @@ static void test_sd_device_one(sd_device *d) { } else assert_se(r == -ENOENT); - r = sd_device_get_sysattr_value(d, "name_assign_type", &val); - assert_se(r >= 0 || ERRNO_IS_PRIVILEGE(r) || IN_SET(r, -ENOENT, -EINVAL)); - - if (r > 0) { + r = sd_device_get_sysattr_value(d, "nsid", NULL); + if (r >= 0) { unsigned x; - assert_se(device_get_sysattr_unsigned(d, "name_assign_type", NULL) >= 0); - assert_se(device_get_sysattr_unsigned(d, "name_assign_type", &x) >= 0); - } + assert_se(device_get_sysattr_unsigned(d, "nsid", NULL) >= 0); + r = device_get_sysattr_unsigned(d, "nsid", &x); + assert_se(r >= 0); + assert_se((x > 0) == (r > 0)); + } else + assert_se(ERRNO_IS_PRIVILEGE(r) || IN_SET(r, -ENOENT, -EINVAL)); } TEST(sd_device_enumerator_devices) {