http-backend.c: fix "dir" and "cmd_arg" leaks in cmd_main()

Free the "dir" variable after we're done with it. Before 917adc03608 (http-backend: add GIT_PROJECT_ROOT environment var, 2009-10-30) there was no leak here, as we'd get it via getenv(), but since 917adc03608 we've xstrdup()'d it (or the equivalent), so we need to free() it. We also need to free the "cmd_arg" variable, which has been leaked ever since it was added in 2f4038ab337 (Git-aware CGI to provide dumb HTTP transport, 2009-10-30). Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Ævar Arnfjörð Bjarmason committed Feb 7, 2023 at 00:07 UTC eef75d247a5f1ce07cb21fa05196cdf7bc443e13
1 file changed +2
http-backend.c
+2
@@ -786,6 +786,7 @@ int cmd_main(int argc, const char **argv)
786 if (!getenv("GIT_HTTP_EXPORT_ALL") &&
787 access("git-daemon-export-ok", F_OK) )
788 not_found(&hdr, "Repository not exported: '%s'", dir);
789 + free(dir);
790
791 http_config();
792 max_request_buffer = git_env_ulong("GIT_HTTP_MAX_REQUEST_BUFFER",
@@ -795,5 +796,6 @@ int cmd_main(int argc, const char **argv)
796 setenv(GIT_PROTOCOL_ENVIRONMENT, proto_header, 0);
797
798 cmd->imp(&hdr, cmd_arg);
799 + free(cmd_arg);
800 return 0;
801 }