diff options
author | Alasdair G Kergon <agk@redhat.com> | 2012-08-07 18:37:35 +0100 |
---|---|---|
committer | Alasdair G Kergon <agk@redhat.com> | 2012-08-07 18:37:35 +0100 |
commit | 7b5ea9a5a89b4eff41520142f719a7d89435f7df (patch) | |
tree | 4d058c1fc48cff836c84a51b1e2beadbf8c12d62 | |
parent | adfa778a58719cb78971526b68a93cee56a18cc4 (diff) | |
download | lvm2-7b5ea9a5a89b4eff41520142f719a7d89435f7df.tar.gz lvm2-7b5ea9a5a89b4eff41520142f719a7d89435f7df.tar.xz lvm2-7b5ea9a5a89b4eff41520142f719a7d89435f7df.zip |
thin: tighten discard string conversions
Respond with "unknown" rather than a NULL pointer if there's an
internal error and the discard value is invalid.
Don't accept 'no_passdown' or 'no-passdown' variants in the LVM
metadata: this is written by the program so should only ever contain
"nopassdown" and should be validated strictly against that.
-rw-r--r-- | lib/metadata/thin_manip.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/lib/metadata/thin_manip.c b/lib/metadata/thin_manip.c index 8d1744cd..0395b48a 100644 --- a/lib/metadata/thin_manip.c +++ b/lib/metadata/thin_manip.c @@ -433,10 +433,7 @@ int get_pool_discard(const char *str, thin_discard_t *discard) { if (!strcasecmp(str, "passdown")) *discard = THIN_DISCARD_PASSDOWN; - /* Allow some variation in thin parameter */ - else if (!strcasecmp(str, "nopassdown") || - !strcasecmp(str, "no-passdown") || - !strcasecmp(str, "no_passdown")) + else if (!strcasecmp(str, "nopassdown")) *discard = THIN_DISCARD_NO_PASSDOWN; else if (!strcasecmp(str, "ignore")) *discard = THIN_DISCARD_IGNORE; @@ -459,7 +456,7 @@ const char *get_pool_discard_name(thin_discard_t discard) return "ignore"; } - log_error(INTERNAL_ERROR "Uknown discard type."); + log_error(INTERNAL_ERROR "Uknown discard type encountered."); - return NULL; + return "unknown"; } |