diff options
author | Sami Kerola | 2019-07-12 23:28:10 +0200 |
---|---|---|
committer | Sami Kerola | 2019-07-14 12:52:13 +0200 |
commit | f3aded3fdb1e19818b05f205b74cd4bff7532811 (patch) | |
tree | d96f40e8f6a1cdc7d51c28743be07dd51a7347c8 | |
parent | libmount: fix potential null pointer dereference (diff) | |
download | kernel-qcow2-util-linux-f3aded3fdb1e19818b05f205b74cd4bff7532811.tar.gz kernel-qcow2-util-linux-f3aded3fdb1e19818b05f205b74cd4bff7532811.tar.xz kernel-qcow2-util-linux-f3aded3fdb1e19818b05f205b74cd4bff7532811.zip |
include/xalloc: ensure xstrdup() and xstrndup() returns nonnull attribute
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>
-rw-r--r-- | include/xalloc.h | 6 | ||||
-rw-r--r-- | misc-utils/lsblk.c | 8 |
2 files changed, 9 insertions, 5 deletions
diff --git a/include/xalloc.h b/include/xalloc.h index 0129a85e2..48712a452 100644 --- a/include/xalloc.h +++ b/include/xalloc.h @@ -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); diff --git a/misc-utils/lsblk.c b/misc-utils/lsblk.c index 3ce6da730..7ab9dc23c 100644 --- a/misc-utils/lsblk.c +++ b/misc-utils/lsblk.c @@ -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) |