summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSami Kerola2019-07-12 23:28:10 +0200
committerSami Kerola2019-07-14 12:52:13 +0200
commitf3aded3fdb1e19818b05f205b74cd4bff7532811 (patch)
treed96f40e8f6a1cdc7d51c28743be07dd51a7347c8
parentlibmount: fix potential null pointer dereference (diff)
downloadkernel-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.h6
-rw-r--r--misc-utils/lsblk.c8
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)