]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
include/xalloc: ensure xstrdup() and xstrndup() returns nonnull attribute
authorSami Kerola <kerolasa@iki.fi>
Fri, 12 Jul 2019 21:28:10 +0000 (22:28 +0100)
committerSami Kerola <kerolasa@iki.fi>
Sun, 14 Jul 2019 10:52:13 +0000 (11:52 +0100)
Turned out lsblk is passing null as argument to xstrdup(), so fix that and
add assert() to make sure promise of not returning null is kept in future.

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
include/xalloc.h
misc-utils/lsblk.c

index 0129a85e2e5bb2a753049b5b4a52780941e52f49..48712a4529142b93c28614a6561380f1ed76c58d 100644 (file)
@@ -62,8 +62,7 @@ static inline char __attribute__((warn_unused_result)) __ul_returns_nonnull
 {
         char *ret;
 
-        if (!str)
-                return NULL;
+        assert(str);
 
         ret = strdup(str);
 
@@ -77,8 +76,7 @@ xstrndup(const char *str, size_t size)
 {
         char *ret;
 
-        if (!str)
-                return NULL;
+        assert(str);
 
         ret = strndup(str, size);
 
index 3ce6da730264f24e524d65ea5a387ca2679587ff..7ab9dc23c29ac0b2536ed67917654cfaaae917b4 100644 (file)
@@ -774,8 +774,14 @@ static char *device_get_data(
                str = get_vfs_attribute(dev, id);
                break;
        case COL_TARGET:
-               str = xstrdup(lsblk_device_get_mountpoint(dev));
+       {
+               char *s = lsblk_device_get_mountpoint(dev);
+               if (s)
+                       str = xstrdup(s);
+               else
+                       str = NULL;
                break;
+       }
        case COL_LABEL:
                prop = lsblk_device_get_properties(dev);
                if (prop && prop->label)