transport-helper: fix memory leak of helper on disconnect
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>
Pablo Sabater committed
Jul 24, 2026 at 12:54 UTC
840eb9a1c54f76b1e16b249eb3f4240c3622daf3
1 file changed
+1
-1
transport-helper.c
+1
-1
@@ -266,9 +266,9 @@ static int disconnect_helper(struct transport *transport)
266
close(data->helper->out);
267
fclose(data->out);
268
res = finish_command(data->helper);
269
- FREE_AND_NULL(data->name);
269
FREE_AND_NULL(data->helper);
270
}
271
+ FREE_AND_NULL(data->name);
272
return res;
273
}
274