On Sun, 27.07.14 15:19, Ansgar Burchardt (ans...@debian.org) wrote: > Require exact matches in all cases instead of treating strings > starting with 't' ('f') as true (false). > > This is required for config_parse_protect_system to parse ProtectSystem=full > correctly: it uses parse_boolean and only tries a more specific parsing > function if that did not return a valid result. Thus "full" was treated as > "false" before.
Hmm, that sounds as if we also should change the order in which we parse the string, no? I mean, first try to parse it as native enum, and only if that doesn't work parse it as boolean? > --- > src/shared/util.c | 4 ++-- > src/test/test-util.c | 1 + > 2 files changed, 3 insertions(+), 2 deletions(-) > > diff --git a/src/shared/util.c b/src/shared/util.c > index 4fda31c..49c17ef 100644 > --- a/src/shared/util.c > +++ b/src/shared/util.c > @@ -231,9 +231,9 @@ int unlink_noerrno(const char *path) { > int parse_boolean(const char *v) { > assert(v); > > - if (streq(v, "1") || v[0] == 'y' || v[0] == 'Y' || v[0] == 't' || > v[0] == 'T' || strcaseeq(v, "on")) > + if (streq(v, "1") || strcaseeq(v, "yes") || strcaseeq(v, "y") || > strcaseeq(v, "true") || strcaseeq(v, "t") || strcaseeq(v, "on")) > return 1; > - else if (streq(v, "0") || v[0] == 'n' || v[0] == 'N' || v[0] == 'f' > || v[0] == 'F' || strcaseeq(v, "off")) > + else if (streq(v, "0") || strcaseeq(v, "no") || strcaseeq(v, "n") || > strcaseeq(v, "false") || strcaseeq(v, "f") || strcaseeq(v, "off")) > return 0; > > return -EINVAL; > diff --git a/src/test/test-util.c b/src/test/test-util.c > index ed91a67..9a28ef9 100644 > --- a/src/test/test-util.c > +++ b/src/test/test-util.c > @@ -129,6 +129,7 @@ static void test_parse_boolean(void) { > > assert_se(parse_boolean("garbage") < 0); > assert_se(parse_boolean("") < 0); > + assert_se(parse_boolean("full") < 0); > } > > static void test_parse_pid(void) { Lennart -- Lennart Poettering, Red Hat _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel