diff options
author | David Teigland <teigland@redhat.com> | 2015-06-16 17:11:47 -0500 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2015-06-16 17:11:47 -0500 |
commit | ec567103a59cfe7a38088a22df3cc6b72c244ede (patch) | |
tree | 1e76dffcedb1f6c03ba8c2120d5c3a51091e969f | |
parent | 85d5823971fc34a2569639c59755a8f6ca24d702 (diff) | |
download | lvm2-ec567103a59cfe7a38088a22df3cc6b72c244ede.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); |