diff options
author | Tim Rice <tim@multitalents.net> | 2002-09-25 17:38:46 -0700 |
---|---|---|
committer | Tim Rice <tim@multitalents.net> | 2002-09-25 17:38:46 -0700 |
commit | 81ed518b9b888502cc57b23c02c47634ca508748 (patch) | |
tree | c5e3572dcc8dabd07784d1686d67e560e1685a6f | |
parent | 164725f40ecda144de706c94778e47dc86ae9257 (diff) |
Cray fixes (bug 367) based on patch from Wendy Palm @ cray.
This does not include the deattack.c fixes.
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | acconfig.h | 5 | ||||
-rw-r--r-- | auth1.c | 9 | ||||
-rw-r--r-- | auth2.c | 11 | ||||
-rw-r--r-- | configure.ac | 7 | ||||
-rw-r--r-- | defines.h | 14 | ||||
-rw-r--r-- | includes.h | 8 | ||||
-rw-r--r-- | loginrec.c | 6 | ||||
-rw-r--r-- | openbsd-compat/bsd-cray.c | 4 | ||||
-rw-r--r-- | openbsd-compat/bsd-cray.h | 4 | ||||
-rw-r--r-- | serverloop.c | 2 | ||||
-rw-r--r-- | session.c | 27 | ||||
-rw-r--r-- | sshd.c | 2 | ||||
-rw-r--r-- | sshpty.c | 8 |
14 files changed, 86 insertions, 25 deletions
@@ -1,6 +1,8 @@ | |||
1 | 20020925 | 1 | 20020925 |
2 | - (bal) Fix issue where successfull login does not clear failure counts | 2 | - (bal) Fix issue where successfull login does not clear failure counts |
3 | in AIX. Patch by dtucker@zip.com.au ok by djm | 3 | in AIX. Patch by dtucker@zip.com.au ok by djm |
4 | - (tim) Cray fixes (bug 367) based on patch from Wendy Palm @ cray. | ||
5 | This does not include the deattack.c fixes. | ||
4 | 6 | ||
5 | 20020923 | 7 | 20020923 |
6 | - (djm) OpenBSD CVS Sync | 8 | - (djm) OpenBSD CVS Sync |
@@ -719,4 +721,4 @@ | |||
719 | save auth method before monitor_reset_key_state(); bugzilla bug #284; | 721 | save auth method before monitor_reset_key_state(); bugzilla bug #284; |
720 | ok provos@ | 722 | ok provos@ |
721 | 723 | ||
722 | $Id: ChangeLog,v 1.2481 2002/09/25 23:14:14 mouring Exp $ | 724 | $Id: ChangeLog,v 1.2482 2002/09/26 00:38:46 tim Exp $ |
diff --git a/acconfig.h b/acconfig.h index f8fc650d7..3e058f3ea 100644 --- a/acconfig.h +++ b/acconfig.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: acconfig.h,v 1.144 2002/07/14 20:36:50 tim Exp $ */ | 1 | /* $Id: acconfig.h,v 1.145 2002/09/26 00:38:48 tim Exp $ */ |
2 | 2 | ||
3 | #ifndef _CONFIG_H | 3 | #ifndef _CONFIG_H |
4 | #define _CONFIG_H | 4 | #define _CONFIG_H |
@@ -150,6 +150,9 @@ | |||
150 | /* Define if you don't want to use lastlog */ | 150 | /* Define if you don't want to use lastlog */ |
151 | #undef DISABLE_LASTLOG | 151 | #undef DISABLE_LASTLOG |
152 | 152 | ||
153 | /* Define if you don't want to use lastlog in session.c */ | ||
154 | #undef NO_SSH_LASTLOG | ||
155 | |||
153 | /* Define if you don't want to use utmp */ | 156 | /* Define if you don't want to use utmp */ |
154 | #undef DISABLE_UTMP | 157 | #undef DISABLE_UTMP |
155 | 158 | ||
@@ -304,6 +304,15 @@ do_authloop(Authctxt *authctxt) | |||
304 | fatal("INTERNAL ERROR: authenticated invalid user %s", | 304 | fatal("INTERNAL ERROR: authenticated invalid user %s", |
305 | authctxt->user); | 305 | authctxt->user); |
306 | 306 | ||
307 | #ifdef _UNICOS | ||
308 | if (type == SSH_CMSG_AUTH_PASSWORD && !authenticated) | ||
309 | cray_login_failure(authctxt->user, IA_UDBERR); | ||
310 | if (authenticated && cray_access_denied(authctxt->user)) { | ||
311 | authenticated = 0; | ||
312 | fatal("Access denied for user %s.",authctxt->user); | ||
313 | } | ||
314 | #endif /* _UNICOS */ | ||
315 | |||
307 | #ifdef HAVE_CYGWIN | 316 | #ifdef HAVE_CYGWIN |
308 | if (authenticated && | 317 | if (authenticated && |
309 | !check_nt_auth(type == SSH_CMSG_AUTH_PASSWORD, pw)) { | 318 | !check_nt_auth(type == SSH_CMSG_AUTH_PASSWORD, pw)) { |
@@ -216,6 +216,13 @@ userauth_finish(Authctxt *authctxt, int authenticated, char *method) | |||
216 | authenticated = 0; | 216 | authenticated = 0; |
217 | #endif /* USE_PAM */ | 217 | #endif /* USE_PAM */ |
218 | 218 | ||
219 | #ifdef _UNICOS | ||
220 | if (authenticated && cray_access_denied(authctxt->user)) { | ||
221 | authenticated = 0; | ||
222 | fatal("Access denied for user %s.",authctxt->user); | ||
223 | } | ||
224 | #endif /* _UNICOS */ | ||
225 | |||
219 | /* Log before sending the reply */ | 226 | /* Log before sending the reply */ |
220 | auth_log(authctxt, authenticated, method, " ssh2"); | 227 | auth_log(authctxt, authenticated, method, " ssh2"); |
221 | 228 | ||
@@ -235,6 +242,10 @@ userauth_finish(Authctxt *authctxt, int authenticated, char *method) | |||
235 | if (authctxt->failures++ > AUTH_FAIL_MAX) { | 242 | if (authctxt->failures++ > AUTH_FAIL_MAX) { |
236 | packet_disconnect(AUTH_FAIL_MSG, authctxt->user); | 243 | packet_disconnect(AUTH_FAIL_MSG, authctxt->user); |
237 | } | 244 | } |
245 | #ifdef _UNICOS | ||
246 | if (strcmp(method, "password") == 0) | ||
247 | cray_login_failure(authctxt->user, IA_UDBERR); | ||
248 | #endif /* _UNICOS */ | ||
238 | methods = authmethods_get(); | 249 | methods = authmethods_get(); |
239 | packet_start(SSH2_MSG_USERAUTH_FAILURE); | 250 | packet_start(SSH2_MSG_USERAUTH_FAILURE); |
240 | packet_put_cstring(methods); | 251 | packet_put_cstring(methods); |
diff --git a/configure.ac b/configure.ac index f88d993e6..5fe50e56b 100644 --- a/configure.ac +++ b/configure.ac | |||
@@ -1,4 +1,4 @@ | |||
1 | # $Id: configure.ac,v 1.88 2002/09/23 23:54:12 tim Exp $ | 1 | # $Id: configure.ac,v 1.89 2002/09/26 00:38:47 tim Exp $ |
2 | 2 | ||
3 | AC_INIT | 3 | AC_INIT |
4 | AC_CONFIG_SRCDIR([ssh.c]) | 4 | AC_CONFIG_SRCDIR([ssh.c]) |
@@ -303,6 +303,7 @@ mips-sony-bsd|mips-sony-newsos4) | |||
303 | no_libnsl=1 | 303 | no_libnsl=1 |
304 | AC_DEFINE(USE_PIPES) | 304 | AC_DEFINE(USE_PIPES) |
305 | AC_DEFINE(DISABLE_FD_PASSING) | 305 | AC_DEFINE(DISABLE_FD_PASSING) |
306 | AC_DEFINE(NO_SSH_LASTLOG) | ||
306 | LDFLAGS="$LDFLAGS -Wl,-Dmsglevel=334:fatal" | 307 | LDFLAGS="$LDFLAGS -Wl,-Dmsglevel=334:fatal" |
307 | LIBS="$LIBS -lgen -lrsc -lshare -luex -lacm" | 308 | LIBS="$LIBS -lgen -lrsc -lshare -luex -lacm" |
308 | MANTYPE=cat | 309 | MANTYPE=cat |
@@ -376,14 +377,14 @@ AC_ARG_WITH(libs, | |||
376 | 377 | ||
377 | # Checks for header files. | 378 | # Checks for header files. |
378 | AC_CHECK_HEADERS(bstring.h crypt.h endian.h floatingpoint.h \ | 379 | AC_CHECK_HEADERS(bstring.h crypt.h endian.h floatingpoint.h \ |
379 | getopt.h glob.h lastlog.h limits.h login.h \ | 380 | getopt.h glob.h ia.h lastlog.h limits.h login.h \ |
380 | login_cap.h maillock.h netdb.h netgroup.h \ | 381 | login_cap.h maillock.h netdb.h netgroup.h \ |
381 | netinet/in_systm.h paths.h pty.h readpassphrase.h \ | 382 | netinet/in_systm.h paths.h pty.h readpassphrase.h \ |
382 | rpc/types.h security/pam_appl.h shadow.h stddef.h stdint.h \ | 383 | rpc/types.h security/pam_appl.h shadow.h stddef.h stdint.h \ |
383 | strings.h sys/bitypes.h sys/bsdtty.h sys/cdefs.h \ | 384 | strings.h sys/bitypes.h sys/bsdtty.h sys/cdefs.h \ |
384 | sys/mman.h sys/select.h sys/stat.h \ | 385 | sys/mman.h sys/select.h sys/stat.h \ |
385 | sys/stropts.h sys/sysmacros.h sys/time.h \ | 386 | sys/stropts.h sys/sysmacros.h sys/time.h \ |
386 | sys/un.h time.h ttyent.h usersec.h \ | 387 | sys/un.h time.h tmpdir.h ttyent.h usersec.h \ |
387 | util.h utime.h utmp.h utmpx.h) | 388 | util.h utime.h utmp.h utmpx.h) |
388 | 389 | ||
389 | # Checks for libraries. | 390 | # Checks for libraries. |
@@ -1,7 +1,7 @@ | |||
1 | #ifndef _DEFINES_H | 1 | #ifndef _DEFINES_H |
2 | #define _DEFINES_H | 2 | #define _DEFINES_H |
3 | 3 | ||
4 | /* $Id: defines.h,v 1.95 2002/08/21 02:54:12 mouring Exp $ */ | 4 | /* $Id: defines.h,v 1.96 2002/09/26 00:38:48 tim Exp $ */ |
5 | 5 | ||
6 | 6 | ||
7 | /* Constants */ | 7 | /* Constants */ |
@@ -124,7 +124,7 @@ typedef char int8_t; | |||
124 | # if (SIZEOF_SHORT_INT == 2) | 124 | # if (SIZEOF_SHORT_INT == 2) |
125 | typedef short int int16_t; | 125 | typedef short int int16_t; |
126 | # else | 126 | # else |
127 | # if defined(_CRAY) && !defined(_CRAYSV2) | 127 | # ifdef _UNICOS |
128 | # if (SIZEOF_SHORT_INT == 4) | 128 | # if (SIZEOF_SHORT_INT == 4) |
129 | typedef short int16_t; | 129 | typedef short int16_t; |
130 | # else | 130 | # else |
@@ -132,16 +132,16 @@ typedef long int16_t; | |||
132 | # endif | 132 | # endif |
133 | # else | 133 | # else |
134 | # error "16 bit int type not found." | 134 | # error "16 bit int type not found." |
135 | # endif /* _CRAY */ | 135 | # endif /* _UNICOS */ |
136 | # endif | 136 | # endif |
137 | # if (SIZEOF_INT == 4) | 137 | # if (SIZEOF_INT == 4) |
138 | typedef int int32_t; | 138 | typedef int int32_t; |
139 | # else | 139 | # else |
140 | # if defined(_CRAY) && !defined(_CRAYSV2) | 140 | # ifdef _UNICOS |
141 | typedef long int32_t; | 141 | typedef long int32_t; |
142 | # else | 142 | # else |
143 | # error "32 bit int type not found." | 143 | # error "32 bit int type not found." |
144 | # endif /* _CRAY */ | 144 | # endif /* _UNICOS */ |
145 | # endif | 145 | # endif |
146 | #endif | 146 | #endif |
147 | 147 | ||
@@ -161,7 +161,7 @@ typedef unsigned char u_int8_t; | |||
161 | # if (SIZEOF_SHORT_INT == 2) | 161 | # if (SIZEOF_SHORT_INT == 2) |
162 | typedef unsigned short int u_int16_t; | 162 | typedef unsigned short int u_int16_t; |
163 | # else | 163 | # else |
164 | # if defined(_CRAY) && !defined(_CRAYSV2) | 164 | # ifdef _UNICOS |
165 | # if (SIZEOF_SHORT_INT == 4) | 165 | # if (SIZEOF_SHORT_INT == 4) |
166 | typedef unsigned short u_int16_t; | 166 | typedef unsigned short u_int16_t; |
167 | # else | 167 | # else |
@@ -174,7 +174,7 @@ typedef unsigned long u_int16_t; | |||
174 | # if (SIZEOF_INT == 4) | 174 | # if (SIZEOF_INT == 4) |
175 | typedef unsigned int u_int32_t; | 175 | typedef unsigned int u_int32_t; |
176 | # else | 176 | # else |
177 | # if defined(_CRAY) && !defined(_CRAYSV2) | 177 | # ifdef _UNICOS |
178 | typedef unsigned long u_int32_t; | 178 | typedef unsigned long u_int32_t; |
179 | # else | 179 | # else |
180 | # error "32 bit int type not found." | 180 | # error "32 bit int type not found." |
diff --git a/includes.h b/includes.h index f6aa2ae67..d7b875c52 100644 --- a/includes.h +++ b/includes.h | |||
@@ -149,6 +149,14 @@ static /**/const char *const rcsid[] = { (char *)rcsid, "\100(#)" msg } | |||
149 | # include <readpassphrase.h> | 149 | # include <readpassphrase.h> |
150 | #endif | 150 | #endif |
151 | 151 | ||
152 | #ifdef HAVE_IA_H | ||
153 | # include <ia.h> | ||
154 | #endif | ||
155 | |||
156 | #ifdef HAVE_TMPDIR_H | ||
157 | # include <tmpdir.h> | ||
158 | #endif | ||
159 | |||
152 | #include <openssl/opensslv.h> /* For OPENSSL_VERSION_NUMBER */ | 160 | #include <openssl/opensslv.h> /* For OPENSSL_VERSION_NUMBER */ |
153 | 161 | ||
154 | #include "defines.h" | 162 | #include "defines.h" |
diff --git a/loginrec.c b/loginrec.c index 6dc608a4e..02c3106a3 100644 --- a/loginrec.c +++ b/loginrec.c | |||
@@ -163,7 +163,7 @@ | |||
163 | #include "log.h" | 163 | #include "log.h" |
164 | #include "atomicio.h" | 164 | #include "atomicio.h" |
165 | 165 | ||
166 | RCSID("$Id: loginrec.c,v 1.43 2002/07/22 23:34:25 mouring Exp $"); | 166 | RCSID("$Id: loginrec.c,v 1.44 2002/09/26 00:38:49 tim Exp $"); |
167 | 167 | ||
168 | #ifdef HAVE_UTIL_H | 168 | #ifdef HAVE_UTIL_H |
169 | # include <util.h> | 169 | # include <util.h> |
@@ -622,13 +622,13 @@ construct_utmp(struct logininfo *li, | |||
622 | switch (li->type) { | 622 | switch (li->type) { |
623 | case LTYPE_LOGIN: | 623 | case LTYPE_LOGIN: |
624 | ut->ut_type = USER_PROCESS; | 624 | ut->ut_type = USER_PROCESS; |
625 | #if defined(_CRAY) && !defined(_CRAYSV2) | 625 | #ifdef _UNICOS |
626 | cray_set_tmpdir(ut); | 626 | cray_set_tmpdir(ut); |
627 | #endif | 627 | #endif |
628 | break; | 628 | break; |
629 | case LTYPE_LOGOUT: | 629 | case LTYPE_LOGOUT: |
630 | ut->ut_type = DEAD_PROCESS; | 630 | ut->ut_type = DEAD_PROCESS; |
631 | #if defined(_CRAY) && !defined(_CRAYSV2) | 631 | #ifdef _UNICOS |
632 | cray_retain_utmp(ut, li->pid); | 632 | cray_retain_utmp(ut, li->pid); |
633 | #endif | 633 | #endif |
634 | break; | 634 | break; |
diff --git a/openbsd-compat/bsd-cray.c b/openbsd-compat/bsd-cray.c index 8a14b0807..edb3112b3 100644 --- a/openbsd-compat/bsd-cray.c +++ b/openbsd-compat/bsd-cray.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * $Id: bsd-cray.c,v 1.7 2002/07/23 21:00:18 mouring Exp $ | 2 | * $Id: bsd-cray.c,v 1.8 2002/09/26 00:38:51 tim Exp $ |
3 | * | 3 | * |
4 | * bsd-cray.c | 4 | * bsd-cray.c |
5 | * | 5 | * |
@@ -34,7 +34,7 @@ | |||
34 | * on UNICOS systems. | 34 | * on UNICOS systems. |
35 | * | 35 | * |
36 | */ | 36 | */ |
37 | #if defined(_CRAY) && !defined(_CRAYSV2) | 37 | #ifdef _UNICOS |
38 | 38 | ||
39 | #include <udb.h> | 39 | #include <udb.h> |
40 | #include <tmpdir.h> | 40 | #include <tmpdir.h> |
diff --git a/openbsd-compat/bsd-cray.h b/openbsd-compat/bsd-cray.h index 0b75b2268..8868b4364 100644 --- a/openbsd-compat/bsd-cray.h +++ b/openbsd-compat/bsd-cray.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * $Id: bsd-cray.h,v 1.4 2002/07/23 21:00:18 mouring Exp $ | 2 | * $Id: bsd-cray.h,v 1.5 2002/09/26 00:38:51 tim Exp $ |
3 | * | 3 | * |
4 | * bsd-cray.h | 4 | * bsd-cray.h |
5 | * | 5 | * |
@@ -37,7 +37,7 @@ | |||
37 | #ifndef _BSD_CRAY_H | 37 | #ifndef _BSD_CRAY_H |
38 | #define _BSD_CRAY_H | 38 | #define _BSD_CRAY_H |
39 | 39 | ||
40 | #if defined(_CRAY) && !defined(_CRAYSV2) | 40 | #ifdef _UNICOS |
41 | void cray_init_job(struct passwd *); /* init cray job */ | 41 | void cray_init_job(struct passwd *); /* init cray job */ |
42 | void cray_job_termination_handler(int); /* process end of job signal */ | 42 | void cray_job_termination_handler(int); /* process end of job signal */ |
43 | void cray_login_failure(char *username, int errcode); | 43 | void cray_login_failure(char *username, int errcode); |
diff --git a/serverloop.c b/serverloop.c index 5112de680..58e20dfb9 100644 --- a/serverloop.c +++ b/serverloop.c | |||
@@ -144,7 +144,9 @@ sigchld_handler(int sig) | |||
144 | int save_errno = errno; | 144 | int save_errno = errno; |
145 | debug("Received SIGCHLD."); | 145 | debug("Received SIGCHLD."); |
146 | child_terminated = 1; | 146 | child_terminated = 1; |
147 | #ifndef _UNICOS | ||
147 | mysignal(SIGCHLD, sigchld_handler); | 148 | mysignal(SIGCHLD, sigchld_handler); |
149 | #endif | ||
148 | notify_parent(); | 150 | notify_parent(); |
149 | errno = save_errno; | 151 | errno = save_errno; |
150 | } | 152 | } |
@@ -512,10 +512,17 @@ do_exec_no_pty(Session *s, const char *command) | |||
512 | perror("dup2 stderr"); | 512 | perror("dup2 stderr"); |
513 | #endif /* USE_PIPES */ | 513 | #endif /* USE_PIPES */ |
514 | 514 | ||
515 | #ifdef _UNICOS | ||
516 | cray_init_job(s->pw); /* set up cray jid and tmpdir */ | ||
517 | #endif | ||
518 | |||
515 | /* Do processing for the child (exec command etc). */ | 519 | /* Do processing for the child (exec command etc). */ |
516 | do_child(s, command); | 520 | do_child(s, command); |
517 | /* NOTREACHED */ | 521 | /* NOTREACHED */ |
518 | } | 522 | } |
523 | #ifdef _UNICOS | ||
524 | signal(WJSIGNAL, cray_job_termination_handler); | ||
525 | #endif /* _UNICOS */ | ||
519 | #ifdef HAVE_CYGWIN | 526 | #ifdef HAVE_CYGWIN |
520 | if (is_winnt) | 527 | if (is_winnt) |
521 | cygwin_set_impersonation_token(INVALID_HANDLE_VALUE); | 528 | cygwin_set_impersonation_token(INVALID_HANDLE_VALUE); |
@@ -603,8 +610,12 @@ do_exec_pty(Session *s, const char *command) | |||
603 | 610 | ||
604 | /* record login, etc. similar to login(1) */ | 611 | /* record login, etc. similar to login(1) */ |
605 | #ifndef HAVE_OSF_SIA | 612 | #ifndef HAVE_OSF_SIA |
606 | if (!(options.use_login && command == NULL)) | 613 | if (!(options.use_login && command == NULL)) { |
614 | #ifdef _UNICOS | ||
615 | cray_init_job(s->pw); /* set up cray jid and tmpdir */ | ||
616 | #endif /* _UNICOS */ | ||
607 | do_login(s, command); | 617 | do_login(s, command); |
618 | } | ||
608 | # ifdef LOGIN_NEEDS_UTMPX | 619 | # ifdef LOGIN_NEEDS_UTMPX |
609 | else | 620 | else |
610 | do_pre_login(s); | 621 | do_pre_login(s); |
@@ -615,6 +626,9 @@ do_exec_pty(Session *s, const char *command) | |||
615 | do_child(s, command); | 626 | do_child(s, command); |
616 | /* NOTREACHED */ | 627 | /* NOTREACHED */ |
617 | } | 628 | } |
629 | #ifdef _UNICOS | ||
630 | signal(WJSIGNAL, cray_job_termination_handler); | ||
631 | #endif /* _UNICOS */ | ||
618 | #ifdef HAVE_CYGWIN | 632 | #ifdef HAVE_CYGWIN |
619 | if (is_winnt) | 633 | if (is_winnt) |
620 | cygwin_set_impersonation_token(INVALID_HANDLE_VALUE); | 634 | cygwin_set_impersonation_token(INVALID_HANDLE_VALUE); |
@@ -755,6 +769,7 @@ do_login(Session *s, const char *command) | |||
755 | printf("%s\n", aixloginmsg); | 769 | printf("%s\n", aixloginmsg); |
756 | #endif /* WITH_AIXAUTHENTICATE */ | 770 | #endif /* WITH_AIXAUTHENTICATE */ |
757 | 771 | ||
772 | #ifndef NO_SSH_LASTLOG | ||
758 | if (options.print_lastlog && s->last_login_time != 0) { | 773 | if (options.print_lastlog && s->last_login_time != 0) { |
759 | time_string = ctime(&s->last_login_time); | 774 | time_string = ctime(&s->last_login_time); |
760 | if (strchr(time_string, '\n')) | 775 | if (strchr(time_string, '\n')) |
@@ -765,6 +780,7 @@ do_login(Session *s, const char *command) | |||
765 | printf("Last login: %s from %s\r\n", time_string, | 780 | printf("Last login: %s from %s\r\n", time_string, |
766 | s->hostname); | 781 | s->hostname); |
767 | } | 782 | } |
783 | #endif /* NO_SSH_LASTLOG */ | ||
768 | 784 | ||
769 | do_motd(); | 785 | do_motd(); |
770 | } | 786 | } |
@@ -1024,6 +1040,11 @@ do_setup_env(Session *s, const char *shell) | |||
1024 | child_set_env(&env, &envsize, "SSH_ORIGINAL_COMMAND", | 1040 | child_set_env(&env, &envsize, "SSH_ORIGINAL_COMMAND", |
1025 | original_command); | 1041 | original_command); |
1026 | 1042 | ||
1043 | #ifdef _UNICOS | ||
1044 | if (cray_tmpdir[0] != '\0') | ||
1045 | child_set_env(&env, &envsize, "TMPDIR", cray_tmpdir); | ||
1046 | #endif /* _UNICOS */ | ||
1047 | |||
1027 | #ifdef _AIX | 1048 | #ifdef _AIX |
1028 | { | 1049 | { |
1029 | char *cp; | 1050 | char *cp; |
@@ -1275,6 +1296,10 @@ do_child(Session *s, const char *command) | |||
1275 | if (options.use_login && command != NULL) | 1296 | if (options.use_login && command != NULL) |
1276 | options.use_login = 0; | 1297 | options.use_login = 0; |
1277 | 1298 | ||
1299 | #ifdef _UNICOS | ||
1300 | cray_setup(pw->pw_uid, pw->pw_name, command); | ||
1301 | #endif /* _UNICOS */ | ||
1302 | |||
1278 | /* | 1303 | /* |
1279 | * Login(1) does this as well, and it needs uid 0 for the "-h" | 1304 | * Login(1) does this as well, and it needs uid 0 for the "-h" |
1280 | * switch, so we let login(1) to this for us. | 1305 | * switch, so we let login(1) to this for us. |
@@ -940,7 +940,7 @@ main(int ac, char **av) | |||
940 | SYSLOG_FACILITY_AUTH : options.log_facility, | 940 | SYSLOG_FACILITY_AUTH : options.log_facility, |
941 | !inetd_flag); | 941 | !inetd_flag); |
942 | 942 | ||
943 | #if defined(_CRAY) && !defined(_CRAYSV2) | 943 | #ifdef _UNICOS |
944 | /* Cray can define user privs drop all prives now! | 944 | /* Cray can define user privs drop all prives now! |
945 | * Not needed on PRIV_SU systems! | 945 | * Not needed on PRIV_SU systems! |
946 | */ | 946 | */ |
@@ -162,7 +162,7 @@ pty_allocate(int *ptyfd, int *ttyfd, char *namebuf, int namebuflen) | |||
162 | } | 162 | } |
163 | return 1; | 163 | return 1; |
164 | #else /* HAVE_DEV_PTS_AND_PTC */ | 164 | #else /* HAVE_DEV_PTS_AND_PTC */ |
165 | #if defined(_CRAY) && !defined(_CRAYSV2) | 165 | #ifdef _UNICOS |
166 | char buf[64]; | 166 | char buf[64]; |
167 | int i; | 167 | int i; |
168 | int highpty; | 168 | int highpty; |
@@ -268,7 +268,7 @@ pty_make_controlling_tty(int *ttyfd, const char *ttyname) | |||
268 | void *old; | 268 | void *old; |
269 | #endif /* USE_VHANGUP */ | 269 | #endif /* USE_VHANGUP */ |
270 | 270 | ||
271 | #if defined(_CRAY) && !defined(_CRAYSV2) | 271 | #ifdef _UNICOS |
272 | if (setsid() < 0) | 272 | if (setsid() < 0) |
273 | error("setsid: %.100s", strerror(errno)); | 273 | error("setsid: %.100s", strerror(errno)); |
274 | 274 | ||
@@ -290,7 +290,7 @@ pty_make_controlling_tty(int *ttyfd, const char *ttyname) | |||
290 | error("%.100s: %.100s", ttyname, strerror(errno)); | 290 | error("%.100s: %.100s", ttyname, strerror(errno)); |
291 | close(*ttyfd); | 291 | close(*ttyfd); |
292 | *ttyfd = fd; | 292 | *ttyfd = fd; |
293 | #else /* _CRAY */ | 293 | #else /* _UNICOS */ |
294 | 294 | ||
295 | /* First disconnect from the old controlling tty. */ | 295 | /* First disconnect from the old controlling tty. */ |
296 | #ifdef TIOCNOTTY | 296 | #ifdef TIOCNOTTY |
@@ -345,7 +345,7 @@ pty_make_controlling_tty(int *ttyfd, const char *ttyname) | |||
345 | strerror(errno)); | 345 | strerror(errno)); |
346 | else | 346 | else |
347 | close(fd); | 347 | close(fd); |
348 | #endif /* _CRAY */ | 348 | #endif /* _UNICOS */ |
349 | } | 349 | } |
350 | 350 | ||
351 | /* Changes the window size associated with the pty. */ | 351 | /* Changes the window size associated with the pty. */ |