From: dtucker@openbsd.org Date: Fri, 3 Mar 2023 03:12:24 +0000 (+0000) Subject: upstream: Check return values of dup2. Spotted by Coverity, ok djm@ X-Git-Tag: V_9_3_P1~43 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=93291bd723959adf462b1df958106cf07a7734dd;p=thirdparty%2Fopenssh-portable.git upstream: Check return values of dup2. Spotted by Coverity, ok djm@ OpenBSD-Commit-ID: 19fb1b53072826d00c67df677731d2f6c1dd602b --- diff --git a/scp.c b/scp.c index 1adff5cec..a893d4a28 100644 --- a/scp.c +++ b/scp.c @@ -1,4 +1,4 @@ -/* $OpenBSD: scp.c,v 1.252 2023/01/10 23:22:15 millert Exp $ */ +/* $OpenBSD: scp.c,v 1.253 2023/03/03 03:12:24 dtucker Exp $ */ /* * scp - secure remote copy. This is basically patched BSD rcp which * uses ssh to do the data transfer (instead of using rcmd). @@ -394,8 +394,10 @@ do_cmd2(char *host, char *remuser, int port, char *cmd, /* Fork a child to execute the command on the remote host using ssh. */ pid = fork(); if (pid == 0) { - dup2(fdin, 0); - dup2(fdout, 1); + if (dup2(fdin, 0) == -1) + perror("dup2"); + if (dup2(fdout, 1) == -1) + perror("dup2"); replacearg(&args, 0, "%s", ssh_program); if (port != -1) { diff --git a/sshd.c b/sshd.c index ce48602d7..748c15ee2 100644 --- a/sshd.c +++ b/sshd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sshd.c,v 1.597 2023/02/10 04:47:19 djm Exp $ */ +/* $OpenBSD: sshd.c,v 1.598 2023/03/03 03:12:24 dtucker Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -2117,17 +2117,21 @@ main(int ac, char **av) if (rexec_flag) { debug("rexec start in %d out %d newsock %d pipe %d sock %d", sock_in, sock_out, newsock, startup_pipe, config_s[0]); - dup2(newsock, STDIN_FILENO); - dup2(STDIN_FILENO, STDOUT_FILENO); + if (dup2(newsock, STDIN_FILENO) == -1) + debug3_f("dup2 stdin: %s", strerror(errno)); + if (dup2(STDIN_FILENO, STDOUT_FILENO) == -1) + debug3_f("dup2 stdout: %s", strerror(errno)); if (startup_pipe == -1) close(REEXEC_STARTUP_PIPE_FD); else if (startup_pipe != REEXEC_STARTUP_PIPE_FD) { - dup2(startup_pipe, REEXEC_STARTUP_PIPE_FD); + if (dup2(startup_pipe, REEXEC_STARTUP_PIPE_FD) == -1) + debug3_f("dup2 startup_p: %s", strerror(errno)); close(startup_pipe); startup_pipe = REEXEC_STARTUP_PIPE_FD; } - dup2(config_s[1], REEXEC_CONFIG_PASS_FD); + if (dup2(config_s[1], REEXEC_CONFIG_PASS_FD) == -1) + debug3_f("dup2 config_s: %s", strerror(errno)); close(config_s[1]); ssh_signal(SIGHUP, SIG_IGN); /* avoid reset to SIG_DFL */