Re: [PATCH v2 11/11] bisect: handle dup() failure when redirecting stdout

Jeff King <[email protected]> Thu, 6 Aug 2026 11:41:03 -0400
Newsgroups org.kernel.vger.git
Message-ID <[email protected]>
On Wed, Aug 05, 2026 at 06:31:00PM +0000, Johannes Schindelin via GitGitGadget wrote:

> diff --git a/builtin/bisect.c b/builtin/bisect.c
> index ceb60b0626..733d28d377 100644
> --- a/builtin/bisect.c
> +++ b/builtin/bisect.c
> @@ -1308,7 +1308,12 @@ static int bisect_run(struct bisect_terms *terms, int argc, const char **argv)
>  
>  		fflush(stdout);
>  		saved_stdout = dup(1);
> -		dup2(temporary_stdout_fd, 1);
> +		if (saved_stdout < 0 ||
> +		    dup2(temporary_stdout_fd, 1) < 0) {
> +			res = error_errno(_("could not duplicate stdout"));
> +			close(temporary_stdout_fd);
> +			break;
> +		}

Ironically this produces a new Coverity complaint. ;)

If dup2() fails, then we break out of the loop, leaking saved_stdout.

-Peff