mirror of
https://github.com/git/git.git
synced 2026-08-09 01:21:47 +00:00
transport-helper: check dup() return in get_exporter
get_exporter() duplicates helper->in via dup() and stores the result in fastexport->out. If dup() fails (fd exhaustion), it returns -1. The child_process machinery interprets out = -1 as "create a pipe for stdout", which would silently change the fast-export process's output wiring: instead of sending data back through the helper's input fd, it would write to a new pipe that nobody reads from. Check the return value and report the error before proceeding. Pointed out by Coverity. Assisted-by: Claude Opus 4.6 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
6a64a97508
commit
efad7ad287
@@ -487,6 +487,8 @@ static int get_exporter(struct transport *transport,
|
||||
/* we need to duplicate helper->in because we want to use it after
|
||||
* fastexport is done with it. */
|
||||
fastexport->out = dup(helper->in);
|
||||
if (fastexport->out < 0)
|
||||
return error_errno(_("could not dup helper output fd"));
|
||||
strvec_push(&fastexport->args, "fast-export");
|
||||
strvec_push(&fastexport->args, "--use-done-feature");
|
||||
strvec_push(&fastexport->args, data->signed_tags ?
|
||||
|
||||
Reference in New Issue
Block a user