mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
dir: fix leak when parsing "status.showUntrackedFiles"
We use `repo_config_get_string()` to read "status.showUntrackedFiles" from the config subsystem. This function allocates the result, but we never free the result after parsing it. The value never leaves the scope of the calling function, so refactor it to instead use `repo_config_get_string_tmp()`, which does not hand over ownership to the caller. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Taylor Blau <me@ttaylorr.com>
This commit is contained in:
committed by
Taylor Blau
parent
44cbc97229
commit
e0e970d6ae
4
dir.c
4
dir.c
@@ -2872,14 +2872,14 @@ static void set_untracked_ident(struct untracked_cache *uc)
|
||||
static unsigned new_untracked_cache_flags(struct index_state *istate)
|
||||
{
|
||||
struct repository *repo = istate->repo;
|
||||
char *val;
|
||||
const char *val;
|
||||
|
||||
/*
|
||||
* This logic is coordinated with the setting of these flags in
|
||||
* wt-status.c#wt_status_collect_untracked(), and the evaluation
|
||||
* of the config setting in commit.c#git_status_config()
|
||||
*/
|
||||
if (!repo_config_get_string(repo, "status.showuntrackedfiles", &val) &&
|
||||
if (!repo_config_get_string_tmp(repo, "status.showuntrackedfiles", &val) &&
|
||||
!strcmp(val, "all"))
|
||||
return 0;
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ test_description='test untracked cache'
|
||||
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
||||
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
||||
|
||||
TEST_PASSES_SANITIZE_LEAK=true
|
||||
. ./test-lib.sh
|
||||
|
||||
# On some filesystems (e.g. FreeBSD's ext2 and ufs) directory mtime
|
||||
|
||||
Reference in New Issue
Block a user