Re: [PATCH v2 11/11] bisect: handle dup() failure when redirecting stdout
Junio C Hamano <[email protected]> Thu, 06 Aug 2026 10:31:39 -0700
| Newsgroups | org.kernel.vger.git |
|---|---|
| Message-ID | <[email protected]> |
Jeff King <[email protected]> writes: > 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. I didn't notice it while I was looking at this part, and wondering if we can (and should) do anything if close() failed there.