chiark / gitweb /
shared: fix resource leak in config_parse_default_instance
[elogind.git] / src / shared / install.c
index 3ef995a9285acd661ec22056810d93de97f230d8..61e572bdf3e99058d09fcfcaa92439283be1f91b 100644 (file)
@@ -179,7 +179,7 @@ static int mark_symlink_for_removal(
 
         assert(p);
 
-        r = set_ensure_allocated(remove_symlinks_to, string_hash_func, string_compare_func);
+        r = set_ensure_allocated(remove_symlinks_to, &string_hash_ops);
         if (r < 0)
                 return r;
 
@@ -884,7 +884,7 @@ static int install_info_add(
             hashmap_get(c->will_install, name))
                 return 0;
 
-        r = hashmap_ensure_allocated(&c->will_install, string_hash_func, string_compare_func);
+        r = hashmap_ensure_allocated(&c->will_install, &string_hash_ops);
         if (r < 0)
                 return r;
 
@@ -1025,8 +1025,10 @@ static int config_parse_default_instance(
         if (r < 0)
                 return r;
 
-        if (!unit_instance_is_valid(printed))
+        if (!unit_instance_is_valid(printed)) {
+                free(printed);
                 return -EINVAL;
+        }
 
         free(i->default_instance);
         i->default_instance = printed;
@@ -1393,7 +1395,7 @@ static int install_context_apply(
 
         while ((i = hashmap_first(c->will_install))) {
 
-                q = hashmap_ensure_allocated(&c->have_installed, string_hash_func, string_compare_func);
+                q = hashmap_ensure_allocated(&c->have_installed, &string_hash_ops);
                 if (q < 0)
                         return q;
 
@@ -1434,7 +1436,7 @@ static int install_context_mark_for_removal(
 
         while ((i = hashmap_first(c->will_install))) {
 
-                q = hashmap_ensure_allocated(&c->have_installed, string_hash_func, string_compare_func);
+                q = hashmap_ensure_allocated(&c->have_installed, &string_hash_ops);
                 if (q < 0)
                         return q;