summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Steves <stevesk@pobox.com>2001-06-15 02:10:41 +0000
committerKevin Steves <stevesk@pobox.com>2001-06-15 02:10:41 +0000
commit1f8d65ae32a53f0e82f53a9be1a9af5bf62349ad (patch)
treec429bb4d4541a8f2945d93cb5611bebe9db89d00
parente629722c72a9f0c815946d25a7cf6d686463021e (diff)
- (stevesk) don't set SA_RESTART and set SIGCHLD to SIG_DFL
around grantpt().
-rw-r--r--ChangeLog6
-rw-r--r--misc.c4
-rw-r--r--sshpty.c4
3 files changed, 9 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 9895d1ac..eb3fd3a8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+20010615
+ - (stevesk) don't set SA_RESTART and set SIGCHLD to SIG_DFL
+ around grantpt().
+
20010614
- (bal) Applied X11 Cookie Patch. X11 Cookie behavior has changed to
no longer use /tmp/ssh-XXXXX/
@@ -5310,4 +5314,4 @@
- Wrote replacements for strlcpy and mkdtemp
- Released 1.0pre1
-$Id: ChangeLog,v 1.1179.2.16 2001/06/13 19:18:04 mouring Exp $
+$Id: ChangeLog,v 1.1179.2.17 2001/06/15 02:10:41 stevesk Exp $
diff --git a/misc.c b/misc.c
index feeacb85..4bf6afa2 100644
--- a/misc.c
+++ b/misc.c
@@ -143,10 +143,6 @@ mysignal(int sig, mysig_t act)
memset(&sa, 0, sizeof(sa));
sigemptyset(&sa.sa_mask);
sa.sa_flags = 0;
-#if defined(SA_RESTART)
- if (sig == SIGCHLD)
- sa.sa_flags |= SA_RESTART;
-#endif
#if defined(SA_INTERRUPT)
if (sig == SIGALRM)
sa.sa_flags |= SA_INTERRUPT;
diff --git a/sshpty.c b/sshpty.c
index 4af55e92..4083e249 100644
--- a/sshpty.c
+++ b/sshpty.c
@@ -20,6 +20,7 @@ RCSID("$OpenBSD: sshpty.c,v 1.1 2001/03/04 01:46:30 djm Exp $");
#include "sshpty.h"
#include "log.h"
+#include "misc.h"
/* Pty allocated with _getpty gets broken if we do I_PUSH:es to it. */
#if defined(HAVE__GETPTY) || defined(HAVE_OPENPTY)
@@ -93,16 +94,19 @@ pty_allocate(int *ptyfd, int *ttyfd, char *namebuf, int namebuflen)
*/
int ptm;
char *pts;
+ mysig_t old_signal;
ptm = open("/dev/ptmx", O_RDWR | O_NOCTTY);
if (ptm < 0) {
error("/dev/ptmx: %.100s", strerror(errno));
return 0;
}
+ old_signal = mysignal(SIGCHLD, SIG_DFL);
if (grantpt(ptm) < 0) {
error("grantpt: %.100s", strerror(errno));
return 0;
}
+ mysignal(SIGCHLD, old_signal);
if (unlockpt(ptm) < 0) {
error("unlockpt: %.100s", strerror(errno));
return 0;