From b6ca6193f7678a9d8790f4319c982cc34b59f150 Mon Sep 17 00:00:00 2001 From: cao Date: Sat, 15 Oct 2016 02:00:47 +0800 Subject: [PATCH] Fix coverity defects: CID 147488, 147490 CID 147488, Type:explicit null dereferenced CID 147490, Type:dereference null return value Reviewed-by: Giuseppe Di Natale Reviewed-by: Brian Behlendorf Signed-off-by: cao.xuewen Closes #5237 --- lib/libzfs/libzfs_util.c | 8 +++++++- module/zfs/spa.c | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/libzfs/libzfs_util.c b/lib/libzfs/libzfs_util.c index 2f29027c9..ca32e7a7f 100644 --- a/lib/libzfs/libzfs_util.c +++ b/lib/libzfs/libzfs_util.c @@ -1585,6 +1585,7 @@ zprop_parse_value(libzfs_handle_t *hdl, nvpair_t *elem, int prop, const char *propname; char *value; boolean_t isnone = B_FALSE; + int err = 0; if (type == ZFS_TYPE_POOL) { proptype = zpool_prop_get_type(prop); @@ -1607,7 +1608,12 @@ zprop_parse_value(libzfs_handle_t *hdl, nvpair_t *elem, int prop, "'%s' must be a string"), nvpair_name(elem)); goto error; } - (void) nvpair_value_string(elem, svalp); + err = nvpair_value_string(elem, svalp); + if (err != 0) { + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, + "'%s' is invalid"), nvpair_name(elem)); + goto error; + } if (strlen(*svalp) >= ZFS_MAXPROPLEN) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' is too long"), nvpair_name(elem)); diff --git a/module/zfs/spa.c b/module/zfs/spa.c index 0cf07be9b..ec6924a02 100644 --- a/module/zfs/spa.c +++ b/module/zfs/spa.c @@ -4947,7 +4947,7 @@ spa_vdev_detach(spa_t *spa, uint64_t guid, uint64_t pguid, int replace_done) * But first make sure we're not on any *other* txg's DTL list, to * prevent vd from being accessed after it's freed. */ - vdpath = spa_strdup(vd->vdev_path); + vdpath = spa_strdup(vd->vdev_path ? vd->vdev_path : "none"); for (t = 0; t < TXG_SIZE; t++) (void) txg_list_remove_this(&tvd->vdev_dtl_list, vd, t); vd->vdev_detached = B_TRUE;