diff options
author | Zdenek Kabelac <zkabelac@redhat.com> | 2022-08-15 13:14:03 +0200 |
---|---|---|
committer | Marian Csontos <mcsontos@redhat.com> | 2022-12-08 12:34:22 +0100 |
commit | b56e8fc94d4d2b6d384148e3f74c54f4e1d816e6 (patch) | |
tree | 2cd12cd5f23b65654e8e6860b626b8429e60faa1 | |
parent | 7db3a53d8a3aa7401337fb9aaf00f19cf4407e70 (diff) | |
download | lvm2-b56e8fc94d4d2b6d384148e3f74c54f4e1d816e6.tar.gz |
vdo: fix --vdosettings parser
Parser was incorrectly parsing vdo_use_features - move the skip
of 'use_' prefix into internal loop which handles skipping of '_'.
(cherry picked from commit bba96e8680ef7fa567d6361c269c0bfc05ce3d2c)
-rw-r--r-- | tools/toollib.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/tools/toollib.c b/tools/toollib.c index 210b3dca5..d9a1a92ec 100644 --- a/tools/toollib.c +++ b/tools/toollib.c @@ -1198,13 +1198,11 @@ out: */ static int _compare_vdo_option(const char *b1, const char *b2) { + int use_skipped = 0; + if (strncasecmp(b1, "vdo", 3) == 0) // skip vdo prefix b1 += 3; - if ((tolower(*b1) != tolower(*b2)) && - (strncmp(b2, "use_", 4) == 0)) - b2 += 4; // try again with skipped prefix 'use_' - while (*b1 && *b2) { if (tolower(*b1) == tolower(*b2)) { ++b1; @@ -1216,8 +1214,14 @@ static int _compare_vdo_option(const char *b1, const char *b2) ++b1; // skip to next char else if (*b2 == '_') ++b2; // skip to next char - else + else { + if (!use_skipped++ && (strncmp(b2, "use_", 4) == 0)) { + b2 += 4; // try again with skipped prefix 'use_' + continue; + } + break; // mismatch + } } return (*b1 || *b2) ? 0 : 1; |