]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
dissect-image: fix memleak on failure
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 14 Sep 2022 03:21:56 +0000 (12:21 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 16 Sep 2022 14:11:09 +0000 (23:11 +0900)
src/shared/dissect-image.c

index b186c3a728a7fdec30c8bb3cf7a418fd86f800cf..82ed55d02b79e07ee55382a94db7d651eba59118 100644 (file)
@@ -1964,7 +1964,7 @@ static int verity_partition(
                             -ENODEV  /* Volume is being opened but not ready, crypt_init_by_name would fail, try to open again */))
                         return r;
                 if (IN_SET(r, -EEXIST, -EBUSY)) {
-                        struct crypt_device *existing_cd = NULL;
+                        _cleanup_(sym_crypt_freep) struct crypt_device *existing_cd = NULL;
 
                         if (!restore_deferred_remove){
                                 /* To avoid races, disable automatic removal on umount while setting up the new device. Restore it on failure. */
@@ -2014,9 +2014,8 @@ static int verity_partition(
                                 if (r < 0)
                                         return r;
 
-                                if (cd)
-                                        sym_crypt_free(cd);
-                                cd = existing_cd;
+                                sym_crypt_free(cd);
+                                cd = TAKE_PTR(existing_cd);
                         }
                 }
                 if (r == 0)