upstream: save_errno wrappers inside two small signal handlers that
perform system calls, for systems with libc that do perform libc sigtramps. ok djm markus OpenBSD-Commit-ID: 7749b56419a7c9dcfe4c6c04811e429813346c62
This commit is contained in:
parent
f23e9332c4
commit
b8793e2b08
4
scp.c
4
scp.c
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: scp.c,v 1.260 2023/10/11 05:42:08 djm Exp $ */
|
/* $OpenBSD: scp.c,v 1.261 2024/06/26 23:14:14 deraadt Exp $ */
|
||||||
/*
|
/*
|
||||||
* scp - secure remote copy. This is basically patched BSD rcp which
|
* scp - secure remote copy. This is basically patched BSD rcp which
|
||||||
* uses ssh to do the data transfer (instead of using rcmd).
|
* uses ssh to do the data transfer (instead of using rcmd).
|
||||||
|
@ -222,9 +222,11 @@ suspone(int pid, int signo)
|
||||||
static void
|
static void
|
||||||
suspchild(int signo)
|
suspchild(int signo)
|
||||||
{
|
{
|
||||||
|
int save_errno = errno;
|
||||||
suspone(do_cmd_pid, signo);
|
suspone(do_cmd_pid, signo);
|
||||||
suspone(do_cmd_pid2, signo);
|
suspone(do_cmd_pid2, signo);
|
||||||
kill(getpid(), SIGSTOP);
|
kill(getpid(), SIGSTOP);
|
||||||
|
errno = save_errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
4
sftp.c
4
sftp.c
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: sftp.c,v 1.238 2024/04/30 06:16:55 djm Exp $ */
|
/* $OpenBSD: sftp.c,v 1.239 2024/06/26 23:14:14 deraadt Exp $ */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
|
* Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
|
||||||
*
|
*
|
||||||
|
@ -234,12 +234,14 @@ killchild(int signo)
|
||||||
static void
|
static void
|
||||||
suspchild(int signo)
|
suspchild(int signo)
|
||||||
{
|
{
|
||||||
|
int save_errno = errno;
|
||||||
if (sshpid > 1) {
|
if (sshpid > 1) {
|
||||||
kill(sshpid, signo);
|
kill(sshpid, signo);
|
||||||
while (waitpid(sshpid, NULL, WUNTRACED) == -1 && errno == EINTR)
|
while (waitpid(sshpid, NULL, WUNTRACED) == -1 && errno == EINTR)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
kill(getpid(), SIGSTOP);
|
kill(getpid(), SIGSTOP);
|
||||||
|
errno = save_errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Reference in New Issue