]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
conf-parser: make config_parse_tristate() accept an empty string
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 4 Jun 2021 17:30:17 +0000 (02:30 +0900)
committerLennart Poettering <lennart@poettering.net>
Fri, 4 Jun 2021 20:51:26 +0000 (22:51 +0200)
Fixes #19822.

src/shared/conf-parser.c

index ce3af64962178febfdac9283502b3d0991778d13..d0ac1b26601eba9e0a03e014cbfe7a60ed17e9ad 100644 (file)
@@ -706,13 +706,18 @@ int config_parse_tristate(
         assert(rvalue);
         assert(data);
 
-        /* A tristate is pretty much a boolean, except that it can
-         * also take the special value -1, indicating "uninitialized",
-         * much like NULL is for a pointer type. */
+        /* A tristate is pretty much a boolean, except that it can also take an empty string,
+         * indicating "uninitialized", much like NULL is for a pointer type. */
+
+        if (isempty(rvalue)) {
+                *t = -1;
+                return 0;
+        }
 
         k = parse_boolean(rvalue);
         if (k < 0) {
-                log_syntax(unit, LOG_WARNING, filename, line, k, "Failed to parse boolean value, ignoring: %s", rvalue);
+                log_syntax(unit, LOG_WARNING, filename, line, k,
+                           "Failed to parse boolean value for %s=, ignoring: %s", lvalue, rvalue);
                 return 0;
         }