]> andersk Git - openssh.git/commitdiff
20020514
authortim <tim>
Tue, 14 May 2002 00:07:18 +0000 (00:07 +0000)
committertim <tim>
Tue, 14 May 2002 00:07:18 +0000 (00:07 +0000)
[sshpty.c] set tty modes when allocating old style bsd ptys to
match what newer style ptys have when allocated. Based on a patch by
Roger Cornelius <rac@tenzing.org>
[README.privsep] UnixWare 7 and OpenUNIX 8 work.

ChangeLog
README.privsep
sshpty.c

index e368c618cdb46c8268f7d562c25d80d42e36d392..11a4527c60d37f5bcfc60757f528f52fcd34dc55 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 20020514
  - (stevesk) [README.privsep] PAM+privsep works with Solaris 8.
+ - (tim) [sshpty.c] set tty modes when allocating old style bsd ptys to
+   match what newer style ptys have when allocated. Based on a patch by
+   Roger Cornelius <rac@tenzing.org>
+   [README.privsep] UnixWare 7 and OpenUNIX 8 work.
 
 20020513
  - (stevesk) add initial README.privsep
index 552b2915c31e531b7958ad91ebc376ad32c00942..829fb635158bedea04c2594edd352427221073e5 100644 (file)
@@ -20,6 +20,9 @@ prepare the privsep preauth environment:
        # groupadd sshd
        # useradd -g sshd sshd
 
+If you are on UnixWare 7 or OpenUNIX 8 do this additional step.
+       # ln /usr/lib/.ns.so /usr/lib/ns.so.1
+
 /var/empty should not contain any files.
 
 configure supports the following options to change the default
@@ -31,6 +34,7 @@ privsep user and chroot directory:
 Privsep requires operating system support for file descriptor passing
 and mmap(MAP_ANON).
 
+OpenSSH is known to function with privsep on UnixWare 7 and OpenUNIX 8
 PAM-enabled OpenSSH is known to function with privsep on Linux and
 Solaris 8.  It does not function on HP-UX with a trusted system
 configuration.  PAMAuthenticationViaKbdInt does not function with
index 71c48b5730248bac2a8dc54ff44f6395f220df42..91de759390994055af2d4798687d4623736fd2c1 100644 (file)
--- a/sshpty.c
+++ b/sshpty.c
@@ -199,6 +199,7 @@ pty_allocate(int *ptyfd, int *ttyfd, char *namebuf, int namebuflen)
        const char *ptyminors = "0123456789abcdef";
        int num_minors = strlen(ptyminors);
        int num_ptys = strlen(ptymajors) * num_minors;
+       struct termios tio;
 
        for (i = 0; i < num_ptys; i++) {
                snprintf(buf, sizeof buf, "/dev/pty%c%c", ptymajors[i / num_minors],
@@ -223,6 +224,19 @@ pty_allocate(int *ptyfd, int *ttyfd, char *namebuf, int namebuflen)
                        close(*ptyfd);
                        return 0;
                }
+               /* set tty modes to a sane state for broken clients */
+               if (tcgetattr(*ptyfd, &tio) < 0)
+                       log("Getting tty modes for pty failed: %.100s", strerror(errno));
+               else {
+                       tio.c_lflag |= (ECHO | ISIG | ICANON);
+                       tio.c_oflag |= (OPOST | ONLCR);
+                       tio.c_iflag |= ICRNL;
+
+                       /* Set the new modes for the terminal. */
+                       if (tcsetattr(*ptyfd, TCSANOW, &tio) < 0)
+                               log("Setting tty modes for pty failed: %.100s", strerror(errno));
+               }
+
                return 1;
        }
        return 0;
This page took 0.042903 seconds and 5 git commands to generate.