Subject: Re: [PATCH v5 04/13] bisect--helper: reimplement `bisect_autostart` shell function in C

From: Đoàn Trần Công Danh <[email-masked]>
Date: Sun, 26 Jul 2020 08:53:16 +0700

On 2020-07-17 12:53:57+0200, Miriam Rubio <[email-masked]> wrote:
> From: Pranit Bauva <[email-masked]>
> 
> +static int bisect_autostart(struct bisect_terms *terms)
> +{
> +	int res;
> +	const char *yesno;
> +
> +	if (file_is_not_empty(git_path_bisect_start()))
> +		return 0;
> +
> +	fprintf_ln(stderr, _("You need to start by \"git bisect "
> +			  "start\"\n"));
> +
> +	if (!isatty(STDIN_FILENO))
> +		return 0;
> +
> +	/*
> +	 * TRANSLATORS: Make sure to include [Y] and [n] in your
> +	 * translation. The program will only accept English input
> +	 * at this point.
> +	 */
> +	yesno = git_prompt(_("Do you want me to do it for you "
> +			     "[Y/n]? "), PROMPT_ECHO);
> +	res = tolower(*yesno) == 'n' ?
> +		-1 : bisect_start(terms, 0, NULL, 0);

Applying 01-04 ontop of v2.28.0-rc2-3-g418cca9555 (current git/git.git's master).

This line crash my git-bisect, MVCE:

	./git-bisect--helper --bisect-autostart

Since it will pass NULL as argv to bisect_start, which expect an array
of "argc + 1" of "char*" (the last element is NULL).
And bisect_start attempts to log bisect entry for this call.

Quick fix:
----------------8<---------------
diff --git a/builtin/bisect--helper.c b/builtin/bisect--helper.c
index 7662ec0ce3..25d3d07721 100644
--- a/builtin/bisect--helper.c
+++ b/builtin/bisect--helper.c
@@ -673,7 +673,7 @@ static int bisect_autostart(struct bisect_terms *terms)
 	yesno = git_prompt(_("Do you want me to do it for you "
 			     "[Y/n]? "), PROMPT_ECHO);
 	res = tolower(*yesno) == 'n' ?
-		-1 : bisect_start(terms, 0, NULL, 0);
+		-1 : bisect_start(terms, 0, empty_argv, 0);
 
 		return res;
 }
-------------------->8------------------

> +
> +		return res;

This line is over-indented. IOW, move left 1 TAB.

-- 
Danh