Bugzilla – Attachment 286 Details for
Bug 536
no access to tty on Linux 2.0 and 2.4+libc5
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Set SSHD_ACQUIRES_CTTY unless openpty tests OK (clean up)
openssh-linux20_ctty4.patch (text/plain), 3.61 KB, created by
Darren Tucker
on 2003-05-10 00:53:10 AEST
(
hide
)
Description:
Set SSHD_ACQUIRES_CTTY unless openpty tests OK (clean up)
Filename:
MIME Type:
Creator:
Darren Tucker
Created:
2003-05-10 00:53:10 AEST
Size:
3.61 KB
patch
obsolete
>Index: acconfig.h >=================================================================== >RCS file: /usr/local/src/security/openssh/cvs/openssh_cvs/acconfig.h,v >retrieving revision 1.150 >diff -u -r1.150 acconfig.h >--- acconfig.h 2 May 2003 10:48:21 -0000 1.150 >+++ acconfig.h 6 May 2003 07:48:27 -0000 >@@ -374,8 +374,8 @@ > /* Some systems put this outside of libc */ > #undef HAVE_NANOSLEEP > >-/* Pushing STREAMS modules incorrectly acquires a controlling TTY */ >-#undef STREAMS_PUSH_ACQUIRES_CTTY >+/* Define if sshd somehow reacquires a controlling TTY after setsid() */ >+#undef SSHD_ACQUIRES_CTTY > > /* Define if cmsg_type is not passed correctly */ > #undef BROKEN_CMSG_TYPE >Index: configure.ac >=================================================================== >RCS file: /usr/local/src/security/openssh/cvs/openssh_cvs/configure.ac,v >retrieving revision 1.115 >diff -u -r1.115 configure.ac >--- configure.ac 2 May 2003 10:48:21 -0000 1.115 >+++ configure.ac 9 May 2003 05:33:31 -0000 >@@ -188,15 +188,56 @@ > AC_DEFINE(SETPROCTITLE_STRATEGY,PS_USE_CLOBBER_ARGV) > AC_DEFINE(SETPROCTITLE_PS_PADDING, '\0') > inet6_default_4in6=yes >- AC_MSG_CHECKING(for broken cmsg_type) >+ # openpty can be in libutil, needed for controlling tty test >+ AC_SEARCH_LIBS(openpty, util) >+ # make sure that openpty does not reacquire controlling terminal >+ AC_MSG_CHECKING(if openpty correctly handles controlling tty) >+ AC_TRY_RUN( >+ [ >+#include <stdio.h> >+#include <sys/fcntl.h> >+#include <sys/types.h> >+#include <sys/wait.h> >+ >+int >+main() >+{ >+ pid_t pid; >+ int fd, ptyfd, ttyfd, status; >+ >+ pid = fork(); >+ if (pid < 0) { /* failed */ >+ exit(1); >+ } else if (pid > 0) { /* parent */ >+ waitpid(pid, &status, 0); >+ if (WIFEXITED(status)) >+ exit(WEXITSTATUS(status)); >+ else >+ exit(2); >+ } else { /* child */ >+ close(0); close(1); close(2); >+ setsid(); >+ openpty(&ptyfd, &ttyfd, NULL, NULL, NULL); >+ fd = open("/dev/tty", O_RDWR | O_NOCTTY); >+ if (fd >= 0) >+ exit(3); /* Acquired ctty: broken */ >+ else >+ exit(0); /* Did not acquire ctty: OK */ >+ } >+} >+ ], >+ [ >+ AC_MSG_RESULT(yes) >+ ], >+ [ >+ AC_MSG_RESULT(no) >+ AC_DEFINE(SSHD_ACQUIRES_CTTY) >+ ] >+ ) > case `uname -r` in >- 2.0.*) >- AC_MSG_RESULT(yes) >+ 1.*|2.0.*) > AC_DEFINE(BROKEN_CMSG_TYPE) > ;; >- *) >- AC_MSG_RESULT(no) >- ;; > esac > ;; > mips-sony-bsd|mips-sony-newsos4) >@@ -230,7 +271,8 @@ > AC_DEFINE(LOGIN_NEEDS_UTMPX) > AC_DEFINE(LOGIN_NEEDS_TERM) > AC_DEFINE(PAM_TTY_KLUDGE) >- AC_DEFINE(STREAMS_PUSH_ACQUIRES_CTTY) >+ # Pushing STREAMS modules will cause sshd to acquire a controlling tty. >+ AC_DEFINE(SSHD_ACQUIRES_CTTY) > # hardwire lastlog location (can't detect it on some versions) > conf_lastlog_location="/var/adm/lastlog" > AC_MSG_CHECKING(for obsolete utmp and wtmp in solaris2.x) >Index: sshd.c >=================================================================== >RCS file: /usr/local/src/security/openssh/cvs/openssh_cvs/sshd.c,v >retrieving revision 1.237 >diff -u -r1.237 sshd.c >--- sshd.c 9 Apr 2003 10:59:50 -0000 1.237 >+++ sshd.c 9 May 2003 04:54:26 -0000 >@@ -1400,11 +1400,11 @@ > * setlogin() affects the entire process group. We don't > * want the child to be able to affect the parent. > */ >-#if !defined(STREAMS_PUSH_ACQUIRES_CTTY) >+#if !defined(SSHD_ACQUIRES_CTTY) > /* >- * If setsid is called on Solaris, sshd will acquire the controlling >- * terminal while pushing STREAMS modules. This will prevent the >- * shell from acquiring it later. >+ * If setsid is called, on some platforms sshd will later acquire a >+ * controlling terminal which will result in "could not set >+ * controlling tty" errors. > */ > if (!debug_flag && !inetd_flag && setsid() < 0) > error("setsid: %.100s", strerror(errno));
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 536
:
282
|
283
|
284
|
285
| 286