chiark / gitweb /
basic/env-util: when serializing, actually use escaping
[elogind.git] / src / basic / env-util.c
index c41d9dad86ad0e419cb8899436d9625db67486f9..47c1fccd3b07eaabd65bdd02096168bbb7bf4307 100644 (file)
@@ -248,7 +248,7 @@ fail:
 
         return NULL;
 }
-S
+
 static bool env_match(const char *t, const char *pattern) {
         assert(t);
         assert(pattern);
@@ -780,7 +780,7 @@ int serialize_environment(FILE *f, char **environment) {
                 if (!ce)
                         return -ENOMEM;
 
-                fprintf(f, "env=%s\n", *e);
+                fprintf(f, "env=%s\n", ce);
         }
 
         /* caller should call ferror() */
@@ -789,7 +789,7 @@ int serialize_environment(FILE *f, char **environment) {
 }
 
 int deserialize_environment(char ***environment, const char *line) {
-        char *uce = NULL;
+        char *uce;
         int r;
 
         assert(line);
@@ -800,8 +800,10 @@ int deserialize_environment(char ***environment, const char *line) {
         if (r < 0)
                 return r;
 
-        if (!env_assignment_is_valid(uce))
+        if (!env_assignment_is_valid(uce)) {
+                free(uce);
                 return -EINVAL;
+        }
 
         return strv_env_replace(environment, uce);
 }