AIX cleanups: includes and arguments
Darren Tucker
dtucker at zip.com.au
Thu Jul 3 14:42:07 EST 2003
Hi All.
First the questions:
Is there anything objectionable in this patch?
Is AUDIT_FAIL_AUTH appropriate for the "Reason" field?
Now the details: attached is a patch that changes some of the #includes
for AIX. It moves the AIX-specific includes to port-aix.h and adds
includes that contain the prototypes for many of the authentication
functions. The idea isto fix some warnings.
Unfortunately this exposes a couple of problems:
* setpcred call does not match prototype
* loginfailed on AIX 5.2 takes an (optional?) extra argument: Reason
The patch changes the setpcred call to:
setpcred(pw->pw_name, (char **)NULL);
It also adds configure magic to detect a 4-arg loginfailed and #defines
to use the appropriate call (hidden in port-aix.c, fortunately):
loginfailed((char *)user, hostname, (char *)ttyname, AUDIT_FAIL_AUTH);
There are still a couple of warnings left which I hope to address in
other patches.
-Daz.
--
Darren Tucker (dtucker at zip.com.au)
GPG key 8FF4FA69 / D9A3 86E9 7EEE AF4B B2D4 37C9 C982 80C7 8FF4 FA69
Good judgement comes with experience. Unfortunately, the experience
usually comes from bad judgement.
-------------- next part --------------
Index: acconfig.h
===================================================================
RCS file: /usr/local/src/security/openssh/cvs/openssh_cvs/acconfig.h,v
retrieving revision 1.157
diff -u -r1.157 acconfig.h
--- acconfig.h 11 Jun 2003 12:51:32 -0000 1.157
+++ acconfig.h 1 Jul 2003 12:22:40 -0000
@@ -110,6 +110,9 @@
/* Define if you want to enable AIX4's authenticate function */
#undef WITH_AIXAUTHENTICATE
+/* Define if your AIX loginfailed() function takes 4 arguments */
+#undef AIX_LOGINFAILED_4ARG
+
/* Define if you have/want arrays (cluster-wide session managment, not C arrays) */
#undef WITH_IRIX_ARRAY
Index: auth-passwd.c
===================================================================
RCS file: /usr/local/src/security/openssh/cvs/openssh_cvs/auth-passwd.c,v
retrieving revision 1.54
diff -u -r1.54 auth-passwd.c
--- auth-passwd.c 3 Jun 2003 00:25:48 -0000 1.54
+++ auth-passwd.c 2 Jul 2003 04:57:12 -0000
@@ -42,15 +42,13 @@
#include "log.h"
#include "servconf.h"
#include "auth.h"
+#include "canohost.h"
#if !defined(HAVE_OSF_SIA)
/* Don't need any of these headers for the SIA cases */
# ifdef HAVE_CRYPT_H
# include <crypt.h>
# endif
-# ifdef WITH_AIXAUTHENTICATE
-# include <login.h>
-# endif
# ifdef __hpux
# include <hpsecurity.h>
# include <prot.h>
@@ -150,7 +148,7 @@
}
# endif
# ifdef WITH_AIXAUTHENTICATE
- authsuccess = (authenticate(pw->pw_name,password,&reenter,&authmsg) == 0);
+ authsuccess = (authenticate((char *)pw->pw_name,password,&reenter,&authmsg) == 0);
if (authsuccess) {
/* We don't have a pty yet, so just label the line as "ssh" */
Index: configure.ac
===================================================================
RCS file: /usr/local/src/security/openssh/cvs/openssh_cvs/configure.ac,v
retrieving revision 1.130
diff -u -r1.130 configure.ac
--- configure.ac 30 Jun 2003 09:21:36 -0000 1.130
+++ configure.ac 2 Jul 2003 03:57:23 -0000
@@ -75,12 +75,25 @@
AC_MSG_RESULT($blibflags)
fi
LDFLAGS="$saved_LDFLAGS"
- AC_CHECK_FUNC(authenticate, [AC_DEFINE(WITH_AIXAUTHENTICATE)],
+ dnl Check for authenticate. Might be in libs.a on older AIXes
+ AC_CHECK_FUNC(authenticate, [with_aixauthenticate=1],
[AC_CHECK_LIB(s,authenticate,
- [ AC_DEFINE(WITH_AIXAUTHENTICATE)
+ [ with_aixaixauthenticate=1
LIBS="$LIBS -ls"
])
])
+ dnl Check if loginfailed takes 4 arguments
+ if (test "x$with_aixauthenticate" = "x1" ); then
+ AC_DEFINE(WITH_AIXAUTHENTICATE)
+ AC_MSG_CHECKING(if loginfailed takes 4 arguments)
+ AC_TRY_COMPILE(
+ [#include <usersec.h>],
+ [(void)loginfailed("user","host","tty",0);],
+ [AC_MSG_RESULT(yes)
+ AC_DEFINE(AIX_LOGINFAILED_4ARG)],
+ [AC_MSG_RESULT(no)]
+ )
+ fi
AC_DEFINE(BROKEN_GETADDRINFO)
AC_DEFINE(BROKEN_REALPATH)
dnl AIX handles lastlog as part of its login message
@@ -456,8 +469,8 @@
login_cap.h maillock.h netdb.h netgroup.h \
netinet/in_systm.h paths.h pty.h readpassphrase.h \
rpc/types.h security/pam_appl.h shadow.h stddef.h stdint.h \
- strings.h sys/strtio.h sys/bitypes.h sys/bsdtty.h sys/cdefs.h \
- sys/mman.h sys/pstat.h sys/select.h sys/stat.h \
+ strings.h sys/strtio.h sys/audit.h sys/bitypes.h sys/bsdtty.h \
+ sys/cdefs.h sys/mman.h sys/pstat.h sys/select.h sys/stat.h \
sys/stropts.h sys/sysmacros.h sys/time.h sys/timers.h \
sys/un.h time.h tmpdir.h ttyent.h usersec.h \
util.h utime.h utmp.h utmpx.h)
Index: session.c
===================================================================
RCS file: /usr/local/src/security/openssh/cvs/openssh_cvs/session.c,v
retrieving revision 1.238
diff -u -r1.238 session.c
--- session.c 3 Jun 2003 00:25:48 -0000 1.238
+++ session.c 2 Jul 2003 04:37:09 -0000
@@ -1215,7 +1215,7 @@
{
#ifdef HAVE_SETPCRED
- setpcred(pw->pw_name);
+ setpcred(pw->pw_name, (char **)NULL);
#endif /* HAVE_SETPCRED */
#ifdef HAVE_LOGIN_CAP
# ifdef __bsdi__
Index: openbsd-compat/port-aix.c
===================================================================
RCS file: /usr/local/src/security/openssh/cvs/openssh_cvs/openbsd-compat/port-aix.c,v
retrieving revision 1.10
diff -u -r1.10 port-aix.c
--- openbsd-compat/port-aix.c 3 Jun 2003 02:45:27 -0000 1.10
+++ openbsd-compat/port-aix.c 2 Jul 2003 05:01:34 -0000
@@ -68,9 +68,13 @@
void
record_failed_login(const char *user, const char *ttyname)
{
- char *hostname = get_canonical_hostname(options.use_dns);
+ char *hostname = (char *)get_canonical_hostname(options.use_dns);
- loginfailed(user, hostname, ttyname);
+# ifdef AIX_LOGINFAILED_4ARG
+ loginfailed((char *)user, hostname, (char *)ttyname, AUDIT_FAIL_AUTH);
+# else
+ loginfailed((char *)user, hostname, (char *)ttyname);
+# endif
}
# endif /* CUSTOM_FAILED_LOGIN */
#endif /* _AIX */
Index: openbsd-compat/port-aix.h
===================================================================
RCS file: /usr/local/src/security/openssh/cvs/openssh_cvs/openbsd-compat/port-aix.h,v
retrieving revision 1.8
diff -u -r1.8 port-aix.h
--- openbsd-compat/port-aix.h 2 May 2003 13:42:25 -0000 1.8
+++ openbsd-compat/port-aix.h 2 Jul 2003 01:17:06 -0000
@@ -26,6 +26,15 @@
#ifdef _AIX
+#ifdef WITH_AIXAUTHENTICATE
+# include <login.h>
+# include <userpw.h>
+# include <usersec.h>
+# ifdef HAVE_SYS_AUDIT_H
+# include <sys/audit.h>
+# endif
+#endif
+
/* AIX 4.2.x doesn't have nanosleep but does have nsleep which is equivalent */
#if !defined(HAVE_NANOSLEEP) && defined(HAVE_NSLEEP)
# define nanosleep(a,b) nsleep(a,b)
More information about the openssh-unix-dev
mailing list