The attached patch adds support for array sessions, project id's, and
system audit trail id. Arrays are available at least on UNICOS in
addition to IRIX. The project id & audit stuff is IRIX specific.
Otherwise, the IRIX support in the current OpenSSHp looks good. (There
were some utmp/wtmp oddities, but I think they've gone away in the
latest release.)
--
Mike Stone
-------------- next part --------------
*** openssh-2.1.1p1.orig/configure.in Thu Jun 08 21:58:35 EDT 2000
--- openssh-2.1.1p1/configure.in Wed Jun 21 14:16:26 EDT 2000
***************
*** 89,94 ****
--- 89,97 ----
LDFLAGS="$LDFLAGS"
MANTYPE='$(CATMAN)'
AC_MSG_WARN([*** Irix 6.x is not tested, please report you experiences *** ])
+ AC_DEFINE(WITH_ARRAY)
+ AC_DEFINE(WITH_IRIX_PROJECT)
+ AC_DEFINE(WITH_IRIX_AUDIT)
no_libsocket=1
no_libnsl=1
;;
*** openssh-2.1.1p1.orig/config.h.in Fri Jun 09 06:56:25 EDT 2000
--- openssh-2.1.1p1/config.h.in Wed Jun 21 14:17:02 EDT 2000
***************
*** 15,20 ****
--- 15,29 ----
/* Define if you want to enable AIX4's authenticate function */
#undef WITH_AIXAUTHENTICATE
+ /* Define if you have/want arrays (cluster-wide session managment, not C
arrays) */
+ #undef WITH_ARRAY
+
+ /* Define if you want IRIX project management */
+ #undef WITH_IRIX_PROJECT
+
+ /* Define if you want IRIX audit trails */
+ #undef WITH_IRIX_AUDIT
+
/* Location of random number pool */
#undef RANDOM_POOL
*** openssh-2.1.1p1.orig/session.c Wed Jun 07 07:22:38 EDT 2000
--- openssh-2.1.1p1/session.c Wed Jun 21 15:05:37 EDT 2000
***************
*** 27,32 ****
--- 27,36 ----
#include "ssh2.h"
#include "auth.h"
+ #ifdef WITH_IRIX_PROJECT
+ #include <proj.h>
+ #endif /* WITH_IRIX_PROJECT */
+
/* types */
#define TTYSZ 64
***************
*** 810,815 ****
--- 814,822 ----
extern char **environ;
struct stat st;
char *argv[10];
+ #ifdef WITH_IRIX_PROJECT
+ prid_t projid;
+ #endif /* WITH_IRIX_PROJECT */
/* login(1) is only called if we execute the login shell */
if (options.use_login && command != NULL)
***************
*** 846,851 ****
--- 853,877 ----
exit(1);
}
endgrent();
+
+ #ifdef WITH_ARRAY
+ /* initialize array session */
+ if (newarraysess() != 0)
+ fatal("Failed to set up new array session: %.100s",
+ strerror(errno));
+ #endif /* WITH_ARRAY */
+
+ #ifdef WITH_IRIX_PROJECT
+ /* initialize irix project info */
+ if ((projid = getdfltprojuser(pw->pw_name)) == -1) {
+ debug("Failed to get project id, using projid 0");
+ projid = 0;
+ }
+
+ if (setprid(projid))
+ fatal("Failed to initialize project %d for %s: %.100s",
+ (int)projid, pw->pw_name, strerror(errno));
+ #endif /* WITH_IRIX_PROJECT */
/* Permanently switch to the desired uid. */
permanently_set_uid(pw->pw_uid);
*** openssh-2.1.1p1.orig/uidswap.c Sat Apr 15 21:18:49 EDT 2000
--- openssh-2.1.1p1/uidswap.c Wed Jun 21 15:14:07 EDT 2000
***************
*** 11,16 ****
--- 11,19 ----
#include "ssh.h"
#include "uidswap.h"
+ #ifdef WITH_IRIX_AUDIT
+ #include <sat.h>
+ #endif /* WITH_IRIX_AUDIT */
/*
* Note: all these functions must work in all of the following cases:
***************
*** 83,88 ****
--- 86,99 ----
void
permanently_set_uid(uid_t uid)
{
+ #ifdef WITH_IRIX_AUDIT
+ if (sysconf(_SC_AUDIT)) {
+ debug("Setting sat id to %d", (int) uid);
+ if (satsetid(uid))
+ fatal("error setting satid: %.100s", strerror(errno));
+ }
+ #endif /* WITH_IRIX_AUDIT */
+
if (setuid(uid) < 0)
debug("setuid %d: %.100s", (int) uid, strerror(errno));
}