diff options
| author | Patrick Steinhardt <ps@pks.im> | 2024-09-30 11:13:30 +0200 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2024-09-30 11:23:04 -0700 |
| commit | 64fe1e4a8c8731919b0bb26f6e8b9f8a0f4b0477 (patch) | |
| tree | 2a1e2b7ba2530df32dcf039f029b48c6c467c144 | |
| parent | submodule: fix leaking submodule entry list (diff) | |
| download | git-64fe1e4a8c8731919b0bb26f6e8b9f8a0f4b0477.tar.gz git-64fe1e4a8c8731919b0bb26f6e8b9f8a0f4b0477.zip | |
builtin/stash: fix leaking `pathspec_from_file`
The `OPT_PATHSPEC_FROM_FILE()` option maps to `OPT_FILENAME()`, which we
know will always allocate memory when passed. We never free the memory
though, causing a memory leak. Plug it.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
| -rw-r--r-- | builtin/stash.c | 4 | ||||
| -rwxr-xr-x | t/t3909-stash-pathspec-file.sh | 1 |
2 files changed, 4 insertions, 1 deletions
diff --git a/builtin/stash.c b/builtin/stash.c index f1acc918d0..1399a1bbe2 100644 --- a/builtin/stash.c +++ b/builtin/stash.c @@ -1759,7 +1759,7 @@ static int push_stash(int argc, const char **argv, const char *prefix, int quiet = 0; int pathspec_file_nul = 0; const char *stash_msg = NULL; - const char *pathspec_from_file = NULL; + char *pathspec_from_file = NULL; struct pathspec ps; struct option options[] = { OPT_BOOL('k', "keep-index", &keep_index, @@ -1821,7 +1821,9 @@ static int push_stash(int argc, const char **argv, const char *prefix, ret = do_push_stash(&ps, stash_msg, quiet, keep_index, patch_mode, include_untracked, only_staged); + clear_pathspec(&ps); + free(pathspec_from_file); return ret; } diff --git a/t/t3909-stash-pathspec-file.sh b/t/t3909-stash-pathspec-file.sh index 73f2dbdeb0..83269d0eb4 100755 --- a/t/t3909-stash-pathspec-file.sh +++ b/t/t3909-stash-pathspec-file.sh @@ -2,6 +2,7 @@ test_description='stash --pathspec-from-file' +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh test_tick |
