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

Re: (ITS#5355) back-meta calls back-ldap directly



--BI5RvnYi6R4T2M87
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Sun, Jun 29, 2008 at 11:49:37AM -0700, Howard Chu wrote:
> vorlon@debian.org wrote:
>> This bug is marked as fixed in 2.4.8, but I still see the same problem in
>> the test suite in 2.4.10.  Trying to start slapd with back-meta gives:

>> /home/devel/openldap/build-area/openldap2.3-2.4.10/debian/build/servers/slapd/.libs/lt-slapd: symbol lookup error: ../servers/slapd/back-meta/.libs/back_meta-2.4.so.2: undefined symbol: slap_idassert_parse_cf

>> Is this a regression since 2.4.8?

> Looks more like an incomplete fix. The functions in question haven't 
> changed since 2006. Since we're not using a hacked libltdl the problem 
> you're seeing doesn't show up here. I guess you should have tested this 
> sooner...

Well, given that back_meta has been broken for an indeterminate period of
time on systems whose libltdl doesn't use the insane RTLD_GLOBAL option :),
the Debian userbase for that backend is roughly nonexistent which means
verifying the fix was not a high priority (except that I would like to be
able to turn on 'make test' during our builds).  Is the correct fix to add
this function to the ldap_extra_t struct, as in the attached patch?

Cheers,
-- 
Steve Langasek                   Give me a lever long enough and a Free OS
Debian Developer                   to set it on, and I can move the world.
Ubuntu Developer                                    http://www.debian.org/
slangasek@ubuntu.com                                     vorlon@debian.org

--BI5RvnYi6R4T2M87
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename=no_backend_inter-linking

Index: trunk/servers/slapd/back-ldap/back-ldap.h
===================================================================
--- trunk.orig/servers/slapd/back-ldap/back-ldap.h
+++ trunk/servers/slapd/back-ldap/back-ldap.h
@@ -428,6 +428,8 @@
 	int (*proxy_authz_ctrl)( Operation *op, SlapReply *rs, struct berval *bound_ndn,
 		int version, slap_idassert_t *si, LDAPControl	*ctrl );
 	int (*controls_free)( Operation *op, SlapReply *rs, LDAPControl ***pctrls );
+	int (*idassert_parse_cf)( const char *fname, int lineno, int argc,
+		char *argv[], slap_idassert_t *si );
 } ldap_extra_t;
 
 LDAP_END_DECL
Index: trunk/servers/slapd/back-meta/config.c
===================================================================
--- trunk.orig/servers/slapd/back-meta/config.c
+++ trunk/servers/slapd/back-meta/config.c
@@ -1089,7 +1089,7 @@
 			}
 			cargv[ 2 ] = binddn;
 
-			rc = slap_idassert_parse_cf( fname, lineno, cargc, cargv, &mi->mi_targets[ mi->mi_ntargets - 1 ]->mt_idassert );
+			rc = mi->mi_ldap_extra->idassert_parse_cf( fname, lineno, cargc, cargv, &mi->mi_targets[ mi->mi_ntargets - 1 ]->mt_idassert );
 			if ( rc == 0 ) {
 				struct berval	bv;
 
@@ -1159,7 +1159,7 @@
 			return 1;
 		}
 
-		return slap_idassert_parse_cf( fname, lineno, argc, argv, &mi->mi_targets[ mi->mi_ntargets - 1 ]->mt_idassert );
+		return mi->mi_ldap_extra->idassert_parse_cf( fname, lineno, argc, argv, &mi->mi_targets[ mi->mi_ntargets - 1 ]->mt_idassert );
 
 	/* idassert-authzFrom */
 	} else if ( strcasecmp( argv[ 0 ], "idassert-authzFrom" ) == 0 ) {
Index: trunk/servers/slapd/back-ldap/init.c
===================================================================
--- trunk.orig/servers/slapd/back-ldap/init.c
+++ trunk/servers/slapd/back-ldap/init.c
@@ -34,7 +34,8 @@
 
 static const ldap_extra_t ldap_extra = {
 	ldap_back_proxy_authz_ctrl,
-	ldap_back_controls_free
+	ldap_back_controls_free,
+	slap_idassert_parse_cf
 };
 
 int

--BI5RvnYi6R4T2M87--