remote: plug memory leak when aliasing URLs
commitce01f92889a9398b5170bf7e28425c94173cfe06
authorPatrick Steinhardt <ps@pks.im>
Wed, 14 Aug 2024 06:51:52 +0000 (14 08:51 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 14 Aug 2024 17:07:56 +0000 (14 10:07 -0700)
tree68fab3850cfca529c301cf1cf2126deefc9aa98e
parent90b801d8ff469654900f51ba9cfe8e779039ce7d
remote: plug memory leak when aliasing URLs

When we have a `url.*.insteadOf` configuration, then we end up aliasing
URLs when populating remotes. One place where this happens is in
`alias_all_urls()`, where we loop through all remotes and then alias
each of their URLs. The actual aliasing logic is then contained in
`alias_url()`, which returns an allocated string that contains the new
URL. This URL replaces the old URL that we have in the strvec that
contains all remote URLs.

We replace the remote URLs via `strvec_replace()`, which does not hand
over ownership of the new string to the vector. Still, we didn't free
the aliased URL and thus have a memory leak here. Fix it by freeing the
aliased string.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
remote.c
t/t0210-trace2-normal.sh