summaryrefslogtreecommitdiff
path: root/http-backend.c
diff options
context:
space:
mode:
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>2023-02-06 23:07:44 (GMT)
committerJunio C Hamano <gitster@pobox.com>2023-02-06 23:34:38 (GMT)
commiteef75d247a5f1ce07cb21fa05196cdf7bc443e13 (patch)
tree84a0bcfac88465ce8bde87b6a9c4e4712f12ed1d /http-backend.c
parent9f24f3c719ccb4553f97a861c37cbedcc7357762 (diff)
downloadgit-eef75d247a5f1ce07cb21fa05196cdf7bc443e13.zip
git-eef75d247a5f1ce07cb21fa05196cdf7bc443e13.tar.gz
git-eef75d247a5f1ce07cb21fa05196cdf7bc443e13.tar.bz2
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>
Diffstat (limited to 'http-backend.c')
-rw-r--r--http-backend.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/http-backend.c b/http-backend.c
index 6eb3b2f..67819d9 100644
--- a/http-backend.c
+++ b/http-backend.c
@@ -786,6 +786,7 @@ int cmd_main(int argc, const char **argv)
if (!getenv("GIT_HTTP_EXPORT_ALL") &&
access("git-daemon-export-ok", F_OK) )
not_found(&hdr, "Repository not exported: '%s'", dir);
+ free(dir);
http_config();
max_request_buffer = git_env_ulong("GIT_HTTP_MAX_REQUEST_BUFFER",
@@ -795,5 +796,6 @@ int cmd_main(int argc, const char **argv)
setenv(GIT_PROTOCOL_ENVIRONMENT, proto_header, 0);
cmd->imp(&hdr, cmd_arg);
+ free(cmd_arg);
return 0;
}