]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core: don't synthesize empty list when empty string is read in config_parse_strv()
authorLennart Poettering <lennart@poettering.net>
Thu, 14 Sep 2017 14:53:34 +0000 (16:53 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 14 Sep 2017 14:53:34 +0000 (16:53 +0200)
This was added to make
https://bugs.freedesktop.org/show_bug.cgi?id=62558 work, which has long
been removed, hence let's revert to the original behaviour and fully
flush out the list when an empty string is assigned.

src/shared/conf-parser.c

index 96618fbb925a514b64682158b46ee2f4b8a8970c..c0afe4557779467ee47a1a65f61acbef354c81e6 100644 (file)
@@ -755,16 +755,17 @@ finalize:
         return 0;
 }
 
-int config_parse_strv(const char *unit,
-                      const char *filename,
-                      unsigned line,
-                      const char *section,
-                      unsigned section_line,
-                      const char *lvalue,
-                      int ltype,
-                      const char *rvalue,
-                      void *data,
-                      void *userdata) {
+int config_parse_strv(
+                const char *unit,
+                const char *filename,
+                unsigned line,
+                const char *section,
+                unsigned section_line,
+                const char *lvalue,
+                int ltype,
+                const char *rvalue,
+                void *data,
+                void *userdata) {
 
         char ***sv = data;
         int r;
@@ -775,19 +776,7 @@ int config_parse_strv(const char *unit,
         assert(data);
 
         if (isempty(rvalue)) {
-                char **empty;
-
-                /* Empty assignment resets the list. As a special rule
-                 * we actually fill in a real empty array here rather
-                 * than NULL, since some code wants to know if
-                 * something was set at all... */
-                empty = new0(char*, 1);
-                if (!empty)
-                        return log_oom();
-
-                strv_free(*sv);
-                *sv = empty;
-
+                *sv = strv_free(*sv);
                 return 0;
         }
 
@@ -809,6 +798,7 @@ int config_parse_strv(const char *unit,
                         free(word);
                         continue;
                 }
+
                 r = strv_consume(sv, word);
                 if (r < 0)
                         return log_oom();