]> git.ipfire.org Git - thirdparty/git.git/commitdiff
transport-helper: fix memory leak of helper on disconnect
authorPablo Sabater <pabloosabaterr@gmail.com>
Fri, 24 Jul 2026 10:54:12 +0000 (12:54 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 24 Jul 2026 15:46:58 +0000 (08:46 -0700)
disconnect_helper() only frees data inside of the if(data->helper) block
[1]. When the transport is disconnected without the helper being fully
started, data->name allocated in transport_helper_init()
is never freed.

Move FREE_AND_NULL(data->name) outside the conditional block so it's
always freed on disconnect.

[1]: https://lore.kernel.org/git/05fbadbae2184479c87c37675dde7bd79b3e32ab.1716465556.git.ps@pks.im/

Mentored-by: Karthik Nayak <karthik.188@gmail.com>
Mentored-by: Chandra Pratap <chandrapratap3519@gmail.com>
Signed-off-by: Pablo Sabater <pabloosabaterr@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
transport-helper.c

index 80f90eb7bace6f761b7796fa93b60d7408464b9d..f1950707883dbc06cbc6c74fd7e584844770d77b 100644 (file)
@@ -266,9 +266,9 @@ static int disconnect_helper(struct transport *transport)
                close(data->helper->out);
                fclose(data->out);
                res = finish_command(data->helper);
-               FREE_AND_NULL(data->name);
                FREE_AND_NULL(data->helper);
        }
+       FREE_AND_NULL(data->name);
        return res;
 }