]> git.ipfire.org Git - thirdparty/git.git/commit
pack-bitmap: prevent pattern leak on pseudo-merge re-assignment
authorTaylor Blau <me@ttaylorr.com>
Tue, 12 May 2026 00:47:12 +0000 (20:47 -0400)
committerJunio C Hamano <gitster@pobox.com>
Tue, 12 May 2026 01:36:18 +0000 (10:36 +0900)
commit5e6e8dc7860374d79bad3e2a3ade0c2d391bbad6
treeaf7db4c7c1b8f51ae708acde6a2bca19c6f2bdbe
parent84780db63657057bee11d898ad6c211730d4212f
pack-bitmap: prevent pattern leak on pseudo-merge re-assignment

When "bitmapPseudoMerge.*.pattern" appears more than once for the same
group, `pseudo_merge_config()` frees the old `regex_t *` pointer
but does not call `regfree()` on it first. This leaks whatever internal
state `regcomp()` allocated.

The final cleanup path in `pseudo_merge_group_release()` does call
`regfree()` before `free()`, so only the intermediate replacement is
affected.

Fix this by guarding the replacement with a NULL check and calling
`regfree()` before `free()` when the pointer is non-NULL.

Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
pseudo-merge.c
t/t5333-pseudo-merge-bitmaps.sh