]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream: on fatal errors, make scp wait for ssh connection before
authordjm@openbsd.org <djm@openbsd.org>
Mon, 9 Aug 2021 07:21:01 +0000 (07:21 +0000)
committerDamien Miller <djm@mindrot.org>
Tue, 10 Aug 2021 02:47:45 +0000 (12:47 +1000)
exiting avoids LogLevel=verbose (or greater) messages from ssh appearing
after scp has returned exited and control has returned to the shell; ok
markus@

(this was originally committed as r1.223 along with unrelated stuff that
I rolled back in r1.224)

OpenBSD-Commit-ID: 1261fd667ad918484889ed3d7aec074f3956a74b

scp.c

diff --git a/scp.c b/scp.c
index 894f4c8ef1e94d0a4b433349d9535320f9ff63f1..21467c465888de714aed188abe3c5a9f30509310 100644 (file)
--- a/scp.c
+++ b/scp.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: scp.c,v 1.224 2021/08/09 07:19:12 djm Exp $ */
+/* $OpenBSD: scp.c,v 1.225 2021/08/09 07:21:01 djm Exp $ */
 /*
  * scp - secure remote copy.  This is basically patched BSD rcp which
  * uses ssh to do the data transfer (instead of using rcmd).
@@ -2141,3 +2141,21 @@ lostconn(int signo)
        else
                exit(1);
 }
+
+void
+cleanup_exit(int i)
+{
+       if (remin > 0)
+               close(remin);
+       if (remout > 0)
+               close(remout);
+       if (remin2 > 0)
+               close(remin2);
+       if (remout2 > 0)
+               close(remout2);
+       if (do_cmd_pid > 0)
+               waitpid(do_cmd_pid, NULL, 0);
+       if (do_cmd_pid2 > 0)
+               waitpid(do_cmd_pid2, NULL, 0);
+       exit(i);
+}