[PATCH 5/6] config: fix leak in git_config_get_expiry_in_days()
- From
Jeff King <peff@peff.net>
- Date
- Aug 14, 2020, 16:19 UTC
- Message-ID
- <20200814161946.GE595698@coredump.intra.peff.net>
- In-Reply-To
- <20200814161328.GA153929@coredump.intra.peff.net>
We use git_config_get_string() to retrieve the expiry value in a newly allocated string. But after parsing it, we never free it, leaking the memory.
We could fix this with a free() obviously, but there's an even better solution: we can use the non-allocating "tmp" variant of the function; we only need it to be valid for the lifetime of our parse function.
Signed-off-by: Jeff King <peff@peff.net> --- config.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/config.c b/config.c index 8bb1945aa9..968ef28e5b 100644 --- a/config.c +++ b/config.c @@ -2312,11 +2312,11 @@ int git_config_get_expiry(const char *key, const char **output) int git_config_get_expiry_in_days(const char *key, timestamp_t *expiry, timestamp_t now) { - char *expiry_string; + const char *expiry_string; intmax_t days; timestamp_t when; - if (git_config_get_string(key, &expiry_string)) + if (git_config_get_string_tmp(key, &expiry_string)) return 1; /* no such thing */ if (git_parse_signed(expiry_string, &days, maximum_signed_value_of_type(int))) {
-- 2.28.0.596.g9c08d63829