[lvm-devel] master - lvpoll.c: harden the checks for proper LV name
okozina
okozina at fedoraproject.org
Fri May 15 18:37:33 UTC 2015
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=67657f1ff938b2afd17ab0ce6476a561725a6781
Commit: 67657f1ff938b2afd17ab0ce6476a561725a6781
Parent: ba120640b2db0acf166d60046cd3b0afdf7774b0
Author: Ondrej Kozina <okozina at redhat.com>
AuthorDate: Fri May 15 16:35:00 2015 +0200
Committer: Ondrej Kozina <okozina at redhat.com>
CommitterDate: Fri May 15 20:33:10 2015 +0200
lvpoll.c: harden the checks for proper LV name
lvpoll now process passed LV name properly. It respects
LVM_VG_NAME env. variable and is able to process LV name
passed in various formats:
- VG/LV
- LV name only (with LVM_VG_NAME set)
- /dev/mapper/VG-LV
- /dev/VG/LV
---
tools/lvpoll.c | 16 +++++++++++-----
1 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/tools/lvpoll.c b/tools/lvpoll.c
index 945e5d1..0ed2d45 100644
--- a/tools/lvpoll.c
+++ b/tools/lvpoll.c
@@ -83,11 +83,17 @@ static int poll_lv(struct cmd_context *cmd, const char *lv_name)
{
struct daemon_parms parms = { 0 };
struct poll_operation_id id = {
- .vg_name = extract_vgname(cmd, lv_name),
- .lv_name = strchr(lv_name, '/') + 1,
- .display_name = lv_name
+ .display_name = skip_dev_dir(cmd, lv_name, NULL)
};
+ if (!id.display_name)
+ return_EINVALID_CMD_LINE;
+
+ id.lv_name = id.display_name;
+
+ if (!validate_lvname_param(cmd, &id.vg_name, &id.lv_name))
+ return_EINVALID_CMD_LINE;
+
if (!_set_daemon_parms(cmd, &parms))
return_EINVALID_CMD_LINE;
@@ -106,8 +112,8 @@ int lvpoll(struct cmd_context *cmd, int argc, char **argv)
return EINVALID_CMD_LINE;
}
- if (!argc || !strchr(argv[0], '/')) {
- log_error("Provide full VG/LV name");
+ if (!argc) {
+ log_error("Provide LV name");
return EINVALID_CMD_LINE;
}
More information about the lvm-devel
mailing list