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
}