summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWu Guanghao <wuguanghao3@huawei.com>2020-09-11 17:40:09 +0800
committerZdenek Kabelac <zkabelac@redhat.com>2020-09-11 21:43:08 +0200
commitd71199920fe3a43582c0f2ca629ad502cfb189b5 (patch)
tree3ed553d69457be3441f4c29ff2d5871cce14a242
parentc38c4d9d36d765bbbe839c00b9580f6b1b8a0ef4 (diff)
downloadlvm2-d71199920fe3a43582c0f2ca629ad502cfb189b5.tar.gz
pvmove: check return value of top_level_lv_name()
The return value of top_level_lv_name() may be NULL, so we should check return value of top_level_lv_name before calling strcmp(lv->name, top_level_lv_name(vg, lv_name)). Signed-off-by: Wu Guanghao <wuguanghao3@huawei.com> Signed-off-by: Zhiqiang Liu <liuzhiqiang26@huawei.com>
-rw-r--r--tools/pvmove.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/tools/pvmove.c b/tools/pvmove.c
index cc512b9de..da635a662 100644
--- a/tools/pvmove.c
+++ b/tools/pvmove.c
@@ -326,6 +326,7 @@ static struct logical_volume *_set_up_pvmove_lv(struct cmd_context *cmd,
int lv_skipped = 0;
int needs_exclusive = *exclusive;
const struct logical_volume *holder;
+ const char *new_lv_name;
/* FIXME Cope with non-contiguous => splitting existing segments */
if (!(lv_mirr = lv_create_empty("pvmove%d", NULL,
@@ -363,8 +364,13 @@ static struct logical_volume *_set_up_pvmove_lv(struct cmd_context *cmd,
if (lv == lv_mirr)
continue;
- if (lv_name && strcmp(lv->name, top_level_lv_name(vg, lv_name)))
- continue;
+ if (lv_name) {
+ if (!(new_lv_name = top_level_lv_name(vg, lv_name)))
+ return_NULL;
+
+ if (strcmp(lv->name, new_lv_name))
+ continue;
+ }
if (!lv_is_on_pvs(lv, source_pvl))
continue;