commit 4d9042b347e757448bd0dff60537fe57e1af5ad1 from: Stefan Sperling date: Wed Mar 24 14:17:56 2021 UTC fix error checking in dial_ssh() commit - 46be108faf24f180cc05a66d874d9a449472d817 commit + 4d9042b347e757448bd0dff60537fe57e1af5ad1 blob - bc5756e623d51979c01828389337089965f782a8 blob + b581bbe3e8fc97d4d3215bc948d761fa9c4135e9 --- lib/fetch.c +++ lib/fetch.c @@ -129,17 +129,21 @@ dial_ssh(pid_t *fetchpid, int *fetchfd, const char *ho return error; } else if (pid == 0) { int n; - close(pfd[1]); - dup2(pfd[0], 0); - dup2(pfd[0], 1); + if (close(pfd[1]) == -1) + err(1, "close"); + if (dup2(pfd[0], 0) == -1) + err(1, "dup2"); + if (dup2(pfd[0], 1) == -1) + err(1, "dup2"); n = snprintf(cmd, sizeof(cmd), "git-%s-pack", direction); if (n < 0 || n >= ssizeof(cmd)) err(1, "snprintf"); if (execv(GOT_FETCH_PATH_SSH, argv) == -1) - err(1, "execl"); + err(1, "execv"); abort(); /* not reached */ } else { - close(pfd[0]); + if (close(pfd[0]) == -1) + return got_error_from_errno("close"); *fetchpid = pid; *fetchfd = pfd[1]; return NULL;