4.7p1 password auth broken on SCO OSR6

Roger Cornelius rac at tenzing.org
Fri Sep 14 05:18:24 EST 2007


On 09/10/2007 16:14, Tim Rice wrote:
> On Mon, 10 Sep 2007, Roger Cornelius wrote:
> 
> > openssh 4.7p1
> > SCO OSR6
> > 
> > Password authentication is non-functional.  This seems dependent on
> > USE_LIBIAF which further depends on HAVE_LIBIAF (in defines.h), but
> > there is no longer any code in configure to define the latter.  Building
> 
> This patch will solve the missing HAVE_LIBIAF
> ------------
> --- configure.ac.old	2007-08-15 09:16:29.007892000 -0700
> +++ configure.ac	2007-09-10 15:54:26.072835157 -0700
> @@ -2004,7 +2004,10 @@
>  saved_LIBS="$LIBS"
>  AC_CHECK_LIB(iaf, ia_openinfo, [
>  	LIBS="$LIBS -liaf"
> -	AC_CHECK_FUNCS(set_id, [SSHDLIBS="$SSHDLIBS -liaf"])
> +	AC_CHECK_FUNCS(set_id, [SSHDLIBS="$SSHDLIBS -liaf"
> +				AC_DEFINE(HAVE_LIBIAF, 1,
> +        		[Define if system has libiaf that supports set_id])
> +				])
>  ])
>  LIBS="$saved_LIBS"
>  
> ------------
> 
> > with HAVE_LIBIAF defined enables password authentication, but only for
> > non-long (<9 char) passwords, even though UNIXWARE_LONG_PASSWORDS seems
> > to be defined.  I haven't had time yet to investigate further.
> 
> Authentication in the SVR5 space on OpenServer 6 is still lacking.
> (getluid/setluid)
> 
> Probably best to build in the osr5 space for now.

Your patch fixed password auth for short passwords as expected.

Needed for long passwords is -DHAVE_SECUREWARE, and -lprot (must be
searched before -lcrypt).   I also found the following patch to
openbsd-compat/xcrypt.c was needed though I don't know why.  xcrypt.c
did not change from 4.6p1 to 4.7p1.  I no longer use password
authentication so maybe I forgot to test it on 4.6p1.

This is for udk mode.  I have not tried building in osr mode.

Roger

------------
--- xcrypt.c.orig	2007-09-13 14:58:13.726207003 -0400
+++ xcrypt.c	2007-09-13 14:56:01.376847016 -0400
@@ -30,0 +31,5 @@
+# ifdef HAVE_SECUREWARE
+#  include <sys/security.h>
+#  include <sys/audit.h>
+#  include <prot.h>
+# else
@@ -33,0 +39 @@
+# endif 
@@ -40,6 +45,0 @@
-# ifdef HAVE_SECUREWARE
-#  include <sys/security.h>
-#  include <sys/audit.h>
-#  include <prot.h>
-# endif 
-
@@ -110 +110 @@
-	struct pr_passwd *spw = getprpwnam(pw->pw_name);
+	struct pr_passwd *swspw = getprpwnam(pw->pw_name);
@@ -112,2 +112,2 @@
-	if (spw != NULL)
-		pw_password = spw->ufld.fd_encrypt;
+	if (swspw != NULL)
+		pw_password = swspw->ufld.fd_encrypt;
------------

-- 
Roger Cornelius        rac at tenzing.org


More information about the openssh-unix-dev mailing list