]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
machine: fix memleak in vl_method_list_images()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 15 Oct 2024 04:14:15 +0000 (13:14 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 15 Oct 2024 05:24:58 +0000 (14:24 +0900)
Fixes an issue in fb0ea6a6a36b5fa97e6c57d608bb9f7acb63c8b2.

src/machine/machined-varlink.c

index bd5dbf7e671072e574eda6e60ce95df77188321e..4b167c8fac30d6edb859283b78764d2525288641 100644 (file)
@@ -583,16 +583,18 @@ static int vl_method_list_images(sd_varlink *link, sd_json_variant *parameters,
                 return r;
 
         if (p.image_name) {
+                _cleanup_(image_unrefp) Image *found = NULL;
+
                 if (!image_name_is_valid(p.image_name))
                         return sd_varlink_error_invalid_parameter_name(link, "name");
 
-                r = image_find(IMAGE_MACHINE, p.image_name, /* root = */ NULL, &image);
+                r = image_find(IMAGE_MACHINE, p.image_name, /* root = */ NULL, &found);
                 if (r == -ENOENT)
                         return sd_varlink_error(link, "io.systemd.MachineImage.NoSuchImage", NULL);
                 if (r < 0)
                         return log_debug_errno(r, "Failed to find image: %m");
 
-                return list_image_one_and_maybe_read_metadata(link, image, /* more = */ false, p.acquire_metadata);
+                return list_image_one_and_maybe_read_metadata(link, found, /* more = */ false, p.acquire_metadata);
         }
 
         if (!FLAGS_SET(flags, SD_VARLINK_METHOD_MORE))