From: Zbigniew Jędrzejewski-Szmek Date: Thu, 21 May 2015 03:34:12 +0000 (-0400) Subject: sd-device: fix return codes on error X-Git-Tag: v226.4~1^2~364 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=ca75f92e71a3778d043a7c5ea3f31f05d2f7f8c4;p=elogind.git sd-device: fix return codes on error asprintf() does not set errno. --- diff --git a/src/libelogind/sd-device/sd-device.c b/src/libelogind/sd-device/sd-device.c index 691b9c632..97da4a8ee 100644 --- a/src/libelogind/sd-device/sd-device.c +++ b/src/libelogind/sd-device/sd-device.c @@ -1193,12 +1193,12 @@ int device_get_id_filename(sd_device *device, const char **ret) { streq(subsystem, "block") ? 'b' : 'c', major(devnum), minor(devnum)); if (r < 0) - return -errno; + return -ENOMEM; } else if (ifindex > 0) { /* use netdev ifindex -- n3 */ r = asprintf(&id, "n%u", ifindex); if (r < 0) - return -errno; + return -ENOMEM; } else { /* use $subsys:$sysname -- pci:0000:00:1f.2 * sysname() has '!' translated, get it from devpath @@ -1211,7 +1211,7 @@ int device_get_id_filename(sd_device *device, const char **ret) { r = asprintf(&id, "+%s:%s", subsystem, sysname); if (r < 0) - return -errno; + return -ENOMEM; } device->id_filename = id; diff --git a/src/libsystemd/sd-device/device-enumerator.c b/src/libsystemd/sd-device/device-enumerator.c index d59da7d88..1d79aff8b 100644 --- a/src/libsystemd/sd-device/device-enumerator.c +++ b/src/libsystemd/sd-device/device-enumerator.c @@ -771,9 +771,9 @@ static int parent_crawl_children(sd_device_enumerator *enumerator, const char *p if (dent->d_type != DT_DIR) continue; - k = asprintf(&child, "%s/%s", path, dent->d_name); - if (k < 0) - return -errno; + child = strjoin(path, "/", dent->d_name, NULL); + if (!child) + return -ENOMEM; k = parent_add_child(enumerator, child); if (k < 0)