--BI5RvnYi6R4T2M87 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline
On Sun, Jun 29, 2008 at 11:49:37AM -0700, Howard Chu wrote: > [EMAIL PROTECTED] 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/ [EMAIL PROTECTED] [EMAIL PROTECTED] --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--
