Skip to content

Commit 56d946e

Browse files
ahuntgitster
authored andcommitted
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>
1 parent 7883e21 commit 56d946e

File tree

1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

builtin/rebase.c

+1
Original file line numberDiff line numberDiff line change
@@ -2119,6 +2119,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
21192119
free(options.head_name);
21202120
free(options.gpg_sign_opt);
21212121
free(options.cmd);
2122+
strbuf_release(&options.git_format_patch_opt);
21222123
free(squash_onto_name);
21232124
return ret;
21242125
}

0 commit comments

Comments
 (0)