diff options
author | Zdenek Kabelac <zkabelac@redhat.com> | 2014-10-08 11:14:33 +0200 |
---|---|---|
committer | Zdenek Kabelac <zkabelac@redhat.com> | 2014-10-08 11:35:50 +0200 |
commit | b59335fb398062d6537e8d4e815dcbf339343967 (patch) | |
tree | f4a1ccb45afdb4f62ad50fcbf6c419b37a616ba4 | |
parent | c87e5a308a95e6e7c2d120ce816df14644f8e70a (diff) | |
download | lvm2-b59335fb398062d6537e8d4e815dcbf339343967.tar.gz |
toollib: validate_restricted_lvname_param
Lets make a separate new function to validate names that has
to follow up restriction rules.
-rw-r--r-- | tools/lvconvert.c | 8 | ||||
-rw-r--r-- | tools/lvcreate.c | 5 | ||||
-rw-r--r-- | tools/toollib.c | 19 | ||||
-rw-r--r-- | tools/toollib.h | 2 |
4 files changed, 26 insertions, 8 deletions
diff --git a/tools/lvconvert.c b/tools/lvconvert.c index 50410a5d1..ad4a6c06e 100644 --- a/tools/lvconvert.c +++ b/tools/lvconvert.c @@ -126,16 +126,16 @@ static int _lvconvert_name_params(struct lvconvert_params *lp, (*pargv)++, (*pargc)--; } - if (!validate_lvname_param(cmd, &lp->vg_name, &lp->pool_metadata_name)) + if (!validate_restricted_lvname_param(cmd, &lp->vg_name, &lp->pool_metadata_name)) return_0; - if (!validate_lvname_param(cmd, &lp->vg_name, &lp->pool_data_name)) + if (!validate_restricted_lvname_param(cmd, &lp->vg_name, &lp->pool_data_name)) return_0; - if (!validate_lvname_param(cmd, &lp->vg_name, &lp->origin_name)) + if (!validate_restricted_lvname_param(cmd, &lp->vg_name, &lp->origin_name)) return_0; - if (!validate_lvname_param(cmd, &lp->vg_name, &lp->lv_split_name)) + if (!validate_restricted_lvname_param(cmd, &lp->vg_name, &lp->lv_split_name)) return_0; if (strchr(lp->lv_name_full, '/') && diff --git a/tools/lvcreate.c b/tools/lvcreate.c index 41b8ee349..5a4bced45 100644 --- a/tools/lvcreate.c +++ b/tools/lvcreate.c @@ -51,10 +51,7 @@ static int _lvcreate_name_params(struct lvcreate_params *lp, const char *vg_name; lp->lv_name = arg_str_value(cmd, name_ARG, NULL); - if (!validate_lvname_param(cmd, &lp->vg_name, &lp->lv_name)) - return_0; - - if (lp->lv_name && !apply_lvname_restrictions(lp->lv_name)) + if (!validate_restricted_lvname_param(cmd, &lp->vg_name, &lp->lv_name)) return_0; lp->pool_name = arg_str_value(cmd, thinpool_ARG, NULL) diff --git a/tools/toollib.c b/tools/toollib.c index 8b92968c6..7f656c6e3 100644 --- a/tools/toollib.c +++ b/tools/toollib.c @@ -1309,6 +1309,25 @@ int validate_lvname_param(struct cmd_context *cmd, const char **vg_name, return 1; } +/* + * Validate lvname parameter + * This name must follow restriction rules on prefixes and suffixes. + * + * If it contains vgname, it is extracted from lvname. + * If there is passed vgname, it is compared whether its the same name. + */ +int validate_restricted_lvname_param(struct cmd_context *cmd, const char **vg_name, + const char **lv_name) +{ + if (!validate_lvname_param(cmd, vg_name, lv_name)) + return_0; + + if (lv_name && *lv_name && !apply_lvname_restrictions(*lv_name)) + return_0; + + return -1; +} + struct vgnameid_list { struct dm_list list; const char *vg_name; diff --git a/tools/toollib.h b/tools/toollib.h index 037b7d70b..50cc26c1e 100644 --- a/tools/toollib.h +++ b/tools/toollib.h @@ -132,6 +132,8 @@ int get_and_validate_major_minor(const struct cmd_context *cmd, int validate_lvname_param(struct cmd_context *cmd, const char **vg_name, const char **lv_name); +int validate_restricted_lvname_param(struct cmd_context *cmd, const char **vg_name, + const char **lv_name); int lvremove_single(struct cmd_context *cmd, struct logical_volume *lv, void *handle __attribute__((unused))); |