diff options
author | Wu Guanghao <wuguanghao3@huawei.com> | 2020-09-11 17:40:09 +0800 |
---|---|---|
committer | Zdenek Kabelac <zkabelac@redhat.com> | 2020-09-11 21:43:08 +0200 |
commit | d71199920fe3a43582c0f2ca629ad502cfb189b5 (patch) | |
tree | 3ed553d69457be3441f4c29ff2d5871cce14a242 | |
parent | c38c4d9d36d765bbbe839c00b9580f6b1b8a0ef4 (diff) | |
download | lvm2-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.c | 10 |
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; |