connect: clear child process before freeing in diagnostic mode

The git_connect() function has a special CONNECT_DIAG_URL mode, where we stop short of actually connecting to the other side and just print some parsing details. For URLs that require a child process (like ssh), we free() the child_process struct but forget to clear it, leaking the strings we stuffed into its "env" list. This leak is triggered many times in t5500, which uses "fetch-pack --diag-url", but we're not yet ready to mark it as leak-free. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jeff King committed Sep 24, 2024 at 17:51 UTC 91aa67353971e994596e9cae77d6ec1d8feefa84
1 file changed +1
connect.c
+1
@@ -1485,6 +1485,7 @@ struct child_process *git_connect(int fd[2], const char *url,
1485
1486 free(hostandport);
1487 free(path);
1488 + child_process_clear(conn);
1489 free(conn);
1490 strbuf_release(&cmd);
1491 return NULL;