From: Jeff King Date: Mon, 17 Aug 2020 21:33:13 +0000 (-0400) Subject: config: fix leak in git_config_get_expiry_in_days() X-Git-Tag: v2.29.0-rc0~126^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1c890016a147536e4a6faa5664eedd8765a01b32;p=thirdparty%2Fgit.git config: fix leak in git_config_get_expiry_in_days() 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 Signed-off-by: Junio C Hamano --- diff --git a/config.c b/config.c index d92321a279..82c6552d86 100644 --- a/config.c +++ b/config.c @@ -2300,11 +2300,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))) {