]> git.ipfire.org Git - thirdparty/git.git/commitdiff
pack-objects: plug leak in `read_stdin_packs()`
authorTaylor Blau <me@ttaylorr.com>
Fri, 27 Mar 2026 20:06:43 +0000 (16:06 -0400)
committerJunio C Hamano <gitster@pobox.com>
Fri, 27 Mar 2026 20:40:39 +0000 (13:40 -0700)
The `read_stdin_packs()` function added originally via 339bce27f4f
(builtin/pack-objects.c: add '--stdin-packs' option, 2021-02-22)
declares a `rev_info` struct but neglects to call `release_revisions()`
on it before returning, creating the potential for a leak.

The related change in 97ec43247c0 (pack-objects: declare 'rev_info' for
'--stdin-packs' earlier, 2025-06-23) carried forward this oversight and
did not address it.

Ensure that we call `release_revisions()` appropriately to prevent a
potential leak from this function. Note that in practice our `rev_info`
here does not have a present leak, hence t5331 passes cleanly before
this commit, even when built with SANITIZE=leak.

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

index cd013c0b68a6a3ecd8bd5453b6eb3db3f02b08d8..9a89bc5c4c924aeb9a23200c107fade382f7c5ec 100644 (file)
@@ -3968,6 +3968,8 @@ static void read_stdin_packs(enum stdin_packs_mode mode, int rev_list_unpacked)
                             show_object_pack_hint,
                             &mode);
 
+       release_revisions(&revs);
+
        trace2_data_intmax("pack-objects", the_repository, "stdin_packs_found",
                           stdin_packs_found_nr);
        trace2_data_intmax("pack-objects", the_repository, "stdin_packs_hints",