@matheusbsbs / matheus-bagliano / commits / 51a0a4ed95
Fork 0

bisect--helper: avoid use-after-free

In 5e82c3dd22a (bisect--helper: `bisect_reset` shell function in C, 2019-01-02), the `git bisect reset` subcommand was ported to C. When the call to `git checkout` failed, an error message was reported to the user. However, this error message used the `strbuf` that had just been released already. Let's switch that around: first use it, then release it. Mentored-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Mentored-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Tanushree Tumane <tanushreetumane@gmail.com> Signed-off-by: Miriam Rubio <mirucam@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Tanushree Tumane committed Dec 9, 2019 at 11:56 UTC 51a0a4ed9597e949930d92be59f42f991bc40a7c
1 file changed +4 -3
builtin/bisect--helper.c
+4 -3
@@ -169,11 +169,12 @@ static int bisect_reset(const char *commit)
169
170 argv_array_pushl(&argv, "checkout", branch.buf, "--", NULL);
171 if (run_command_v_opt(argv.argv, RUN_GIT_CMD)) {
172 + error(_("could not check out original"
173 + " HEAD '%s'. Try 'git bisect"
174 + " reset <commit>'."), branch.buf);
175 strbuf_release(&branch);
176 argv_array_clear(&argv);
174 - return error(_("could not check out original"
175 - " HEAD '%s'. Try 'git bisect"
176 - " reset <commit>'."), branch.buf);
177 + return -1;
178 }
179 argv_array_clear(&argv);
180 }