diff options
author | David Teigland <teigland@redhat.com> | 2015-06-16 17:11:47 -0500 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2015-06-17 13:31:45 -0500 |
commit | 5b87b404064fbe6319ba699f5400c5a9ac5af02f (patch) | |
tree | d1355d4d73c281062a5935626323a8e19ed84124 | |
parent | 8b711ab4c9417ba455d7b27cb66b894cbefff7cf (diff) | |
download | lvm2-5b87b404064fbe6319ba699f5400c5a9ac5af02f.tar.gz |
Validate lock_type_t values when processing arg
-rw-r--r-- | tools/args.h | 2 | ||||
-rw-r--r-- | tools/lvmcmdline.c | 13 | ||||
-rw-r--r-- | tools/toollib.c | 2 | ||||
-rw-r--r-- | tools/tools.h | 1 |
4 files changed, 17 insertions, 1 deletions
diff --git a/tools/args.h b/tools/args.h index f33de3ba4..1ca2e0ed5 100644 --- a/tools/args.h +++ b/tools/args.h @@ -56,7 +56,7 @@ arg(locklv_ARG, '\0', "locklv", string_arg, 0) arg(lockopt_ARG, '\0', "lockopt", string_arg, 0) arg(lockstart_ARG, '\0', "lockstart", NULL, 0) arg(lockstop_ARG, '\0', "lockstop", NULL, 0) -arg(locktype_ARG, '\0', "locktype", string_arg, 0) +arg(locktype_ARG, '\0', "locktype", locktype_arg, 0) arg(maxrecoveryrate_ARG, '\0', "maxrecoveryrate", size_kb_arg, 0) arg(merge_ARG, '\0', "merge", NULL, 0) arg(mergedconfig_ARG, '\0', "mergedconfig", NULL, 0) diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c index 810183012..d0bbb61d7 100644 --- a/tools/lvmcmdline.c +++ b/tools/lvmcmdline.c @@ -625,6 +625,19 @@ int alloc_arg(struct cmd_context *cmd __attribute__((unused)), struct arg_values return 1; } +int locktype_arg(struct cmd_context *cmd __attribute__((unused)), struct arg_values *av) +{ + lock_type_t lock_type; + + av->sign = SIGN_NONE; + + lock_type = get_lock_type_from_string(av->value); + if (lock_type == LOCK_TYPE_INVALID) + return 0; + + return 1; +} + int segtype_arg(struct cmd_context *cmd, struct arg_values *av) { struct segment_type *segtype; diff --git a/tools/toollib.c b/tools/toollib.c index 8eb253343..ff7574ed4 100644 --- a/tools/toollib.c +++ b/tools/toollib.c @@ -949,6 +949,8 @@ int vgcreate_params_set_from_args(struct cmd_context *cmd, return 0; } break; + case LOCK_TYPE_NONE: + break; }; /* diff --git a/tools/tools.h b/tools/tools.h index 943a9ddbb..640aa1544 100644 --- a/tools/tools.h +++ b/tools/tools.h @@ -149,6 +149,7 @@ int metadatatype_arg(struct cmd_context *cmd, struct arg_values *av); int units_arg(struct cmd_context *cmd, struct arg_values *av); int segtype_arg(struct cmd_context *cmd, struct arg_values *av); int alloc_arg(struct cmd_context *cmd, struct arg_values *av); +int locktype_arg(struct cmd_context *cmd, struct arg_values *av); int readahead_arg(struct cmd_context *cmd, struct arg_values *av); int metadatacopies_arg(struct cmd_context *cmd __attribute__((unused)), struct arg_values *av); |