From 7e4867f7434965302d5453e62dd8c151bad69a64 Mon Sep 17 00:00:00 2001 From: Alasdair Kergon Date: Mon, 3 Feb 2003 20:09:58 +0000 Subject: LV name validation --- lib/format_text/format-text.c | 2 +- lib/metadata/metadata.h | 2 +- tools/lvcreate.c | 6 ++++++ tools/lvrename.c | 4 ++-- tools/vgcfgrestore.c | 2 +- tools/vgcreate.c | 2 +- tools/vgrename.c | 2 +- 7 files changed, 13 insertions(+), 7 deletions(-) diff --git a/lib/format_text/format-text.c b/lib/format_text/format-text.c index f400971f..4956b9b9 100644 --- a/lib/format_text/format-text.c +++ b/lib/format_text/format-text.c @@ -781,7 +781,7 @@ int vgname_from_mda(const struct format_type *fmt, struct device_area *dev_area, buf[len] = '\0'; /* Ignore this entry if the characters aren't permissible */ - if (!validate_vgname(buf)) { + if (!validate_name(buf)) { stack; goto out; } diff --git a/lib/metadata/metadata.h b/lib/metadata/metadata.h index 9a574765..5973d989 100644 --- a/lib/metadata/metadata.h +++ b/lib/metadata/metadata.h @@ -436,7 +436,7 @@ int vg_add_snapshot(struct logical_volume *origin, int vg_remove_snapshot(struct volume_group *vg, struct logical_volume *cow); -static inline int validate_vgname(const char *n) +static inline int validate_name(const char *n) { register char c; register int len = 0; diff --git a/tools/lvcreate.c b/tools/lvcreate.c index 450477d3..74d21caa 100644 --- a/tools/lvcreate.c +++ b/tools/lvcreate.c @@ -116,6 +116,12 @@ static int _read_name_params(struct lvcreate_params *lp, return 0; } + if (!validate_name(lp->lv_name)) { + log_error("Logical volume name \"%s\" has invalid characters", + lp->lv_name); + return 0; + } + return 1; } diff --git a/tools/lvrename.c b/tools/lvrename.c index f9c64571..b2671b74 100644 --- a/tools/lvrename.c +++ b/tools/lvrename.c @@ -55,7 +55,7 @@ int lvrename(struct cmd_context *cmd, int argc, char **argv) return EINVALID_CMD_LINE; } - if (!validate_vgname(vg_name)) { + if (!validate_name(vg_name)) { log_error("Please provide a valid volume group name"); return EINVALID_CMD_LINE; } @@ -95,7 +95,7 @@ int lvrename(struct cmd_context *cmd, int argc, char **argv) return ECMD_FAILED; } - if (!validate_vgname(lv_name_new)) { + if (!validate_name(lv_name_new)) { log_error ("New logical volume name \"%s\" has invalid characters", lv_name_new); diff --git a/tools/vgcfgrestore.c b/tools/vgcfgrestore.c index 380760af..f48dc122 100644 --- a/tools/vgcfgrestore.c +++ b/tools/vgcfgrestore.c @@ -20,7 +20,7 @@ int vgcfgrestore(struct cmd_context *cmd, int argc, char **argv) if (!strncmp(vg_name, cmd->dev_dir, strlen(cmd->dev_dir))) vg_name += strlen(cmd->dev_dir); - if (!validate_vgname(vg_name)) { + if (!validate_name(vg_name)) { log_error("Volume group name \"%s\" has invalid characters", vg_name); return ECMD_FAILED; diff --git a/tools/vgcreate.c b/tools/vgcreate.c index 0ba620f4..52a29c0c 100644 --- a/tools/vgcreate.c +++ b/tools/vgcreate.c @@ -73,7 +73,7 @@ int vgcreate(struct cmd_context *cmd, int argc, char **argv) return ECMD_FAILED; } - if (!validate_vgname(vg_name)) { + if (!validate_name(vg_name)) { log_error("New volume group name \"%s\" has invalid characters", vg_name); return ECMD_FAILED; diff --git a/tools/vgrename.c b/tools/vgrename.c index c9f84724..c3015e8c 100644 --- a/tools/vgrename.c +++ b/tools/vgrename.c @@ -56,7 +56,7 @@ int vgrename(struct cmd_context *cmd, int argc, char **argv) return ECMD_FAILED; } - if (!validate_vgname(vg_name_new)) { + if (!validate_name(vg_name_new)) { log_error("New volume group name \"%s\" has invalid characters", vg_name_new); return ECMD_FAILED; -- cgit