[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: SASL EXTERNAL via ldapi



On Tue, 22 Nov 2005 13:56:54 -0500
"James F. Hranicky" <jfh@cise.ufl.edu> wrote:

> On Tue, 22 Nov 2005 13:26:07 -0500
> "James F. Hranicky" <jfh@cise.ufl.edu> wrote:
> 
> > I gdb'd through the SASL code and it appeared to return SASL_OK to
> > ldap_int_sasl_bind() . I guess I'll compile openldap for debugging
> > and see what I can see.
> 
> I just realized I never mentioned my platform:
> 
> 	OS		:	Sol 10 x86
> 	openldap	:	2.3.12
> 	sasl		:	2.1.21
> 	BDB		:	4.2.52+patches
> 	compiler	:	SUNWspro, gcc 3.4.4
> 
> Jim
> 

I believe I've found it. There's a typo in the files

	libraries/liblutil/getpeereid.c
	libraries/libldap/os-local.c

The macro

	HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS 

needs to be

	HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTSLEN

Now SASL/EXTERNAL appears to work again on Sol 10. The patch is attached.

Sol 10 now supports getpeerucred() -- I don't know if it would be better
to define getpeereid in terms of that or not.

Jim
--- openldap-2.3.12/libraries/libldap/os-local.c        Tue Sep 27 20:30:28 2005
+++ openldap-2.3.12.mod/libraries/libldap/os-local.c    Wed Nov 23 12:08:27 2005
@@ -156,7 +156,7 @@
 
 #if !defined(HAVE_GETPEEREID) && \
        !defined(SO_PEERCRED) && !defined(LOCAL_PEERCRED) && \
-       defined(HAVE_SENDMSG) && (defined(HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS) || \
+       defined(HAVE_SENDMSG) && (defined(HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTSLEN) || \
                                  defined(HAVE_STRUCT_MSGHDR_MSG_CONTROL))
 #define DO_SENDMSG
 static const char abandonPDU[] = {LDAP_TAG_MESSAGE, 6,
diff -ur openldap-2.3.12/libraries/liblutil/getpeereid.c openldap-2.3.12.mod/libraries/liblutil/getpeereid.c
--- openldap-2.3.12/libraries/liblutil/getpeereid.c     Mon Aug 29 14:46:17 2005
+++ openldap-2.3.12.mod/libraries/liblutil/getpeereid.c Wed Nov 23 11:53:32 2005
@@ -32,7 +32,7 @@
 #endif
 
 #if !defined(SO_PEERCRED) && !defined(LOCAL_PEERCRED) && \
-       defined(HAVE_SENDMSG) && (defined(HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS) || \
+       defined(HAVE_SENDMSG) && (defined(HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTSLEN) || \
                                  defined(HAVE_STRUCT_MSGHDR_MSG_CONTROL))
 #define DO_SENDMSG
 #ifdef HAVE_SYS_UIO_H