diff options
author | Andrzej Hunt <ajrhunt@google.com> | 2021-04-25 14:16:18 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2021-04-28 09:25:45 +0900 |
commit | 805b789a69b664bbcf9a93bff85b90d1c60bfbf5 (patch) | |
tree | 5b45042d74a625416f00470d08f632bc8e4a0b9d /builtin/rebase.c | |
parent | builtin/for-each-ref: free filter and UNLEAK sorting. (diff) | |
download | tgif-805b789a69b664bbcf9a93bff85b90d1c60bfbf5.tar.xz |
builtin/rebase: release git_format_patch_opt too
options.git_format_patch_opt can be populated during cmd_rebase's setup,
and will therefore leak on return. Although we could just UNLEAK all of
options, we choose to strbuf_release() the individual member, which matches
the existing pattern (where we're freeing invidual members of options).
Leak found when running t0021:
Direct leak of 24 byte(s) in 1 object(s) allocated from:
#0 0x49ab79 in realloc ../projects/compiler-rt/lib/asan/asan_malloc_linux.cpp:164:3
#1 0x9ac296 in xrealloc wrapper.c:126:8
#2 0x93b13d in strbuf_grow strbuf.c:98:2
#3 0x93bd3a in strbuf_add strbuf.c:295:2
#4 0x60ae92 in strbuf_addstr strbuf.h:304:2
#5 0x605f17 in cmd_rebase builtin/rebase.c:1759:3
#6 0x4cd91d in run_builtin git.c:467:11
#7 0x4cb5f3 in handle_builtin git.c:719:3
#8 0x4ccf47 in run_argv git.c:808:4
#9 0x4caf49 in cmd_main git.c:939:19
#10 0x69dbfe in main common-main.c:52:11
#11 0x7f66dae91349 in __libc_start_main (/lib64/libc.so.6+0x24349)
SUMMARY: AddressSanitizer: 24 byte(s) leaked in 1 allocation(s).
Signed-off-by: Andrzej Hunt <ajrhunt@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/rebase.c')
-rw-r--r-- | builtin/rebase.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/builtin/rebase.c b/builtin/rebase.c index de400f9a19..7a2e98015c 100644 --- a/builtin/rebase.c +++ b/builtin/rebase.c @@ -2119,6 +2119,7 @@ cleanup: free(options.head_name); free(options.gpg_sign_opt); free(options.cmd); + strbuf_release(&options.git_format_patch_opt); free(squash_onto_name); return ret; } |