]> git.ipfire.org Git - thirdparty/git.git/commitdiff
midx.c: don't leak MIDX from verify_midx_file
authorTaylor Blau <me@ttaylorr.com>
Tue, 26 Oct 2021 21:01:08 +0000 (17:01 -0400)
committerJunio C Hamano <gitster@pobox.com>
Wed, 27 Oct 2021 23:26:37 +0000 (16:26 -0700)
The function midx.c:verify_midx_file() allocates a MIDX struct by
calling load_multi_pack_index(). But when cleaning up, it calls free()
without freeing any resources associated with the MIDX.

Call the more appropriate close_midx() which does free those resources,
which causes t5319.3 to pass when Git is compiled with SANITIZE=leak.

Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
midx.c

diff --git a/midx.c b/midx.c
index 7a8b027be04672ff1aa33228cc06c9ea4e6ec559..e529ca76c12dbeefc48287112c5f057ad885f4cc 100644 (file)
--- a/midx.c
+++ b/midx.c
@@ -1603,7 +1603,7 @@ int verify_midx_file(struct repository *r, const char *object_dir, unsigned flag
                 * Remaining tests assume that we have objects, so we can
                 * return here.
                 */
-               return verify_midx_error;
+               goto cleanup;
        }
 
        if (flags & MIDX_PROGRESS)
@@ -1681,7 +1681,9 @@ int verify_midx_file(struct repository *r, const char *object_dir, unsigned flag
        }
        stop_progress(&progress);
 
+cleanup:
        free(pairs);
+       close_midx(m);
 
        return verify_midx_error;
 }