Package: pdns Version: 2.9.21-4 Severity: serious Hi guys,
pdns now fails to build in unstable and testing, because libldap2-dev has been updated to the openldap 2.4 version and several functions are deprecated: [...] alpha-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I. -I../.. -pthread -D_GNU_SOURCE -Wall -g -O2 -Wall -O2 -MT powerldap.lo -MD -MP -MF .deps/powerldap.Tpo -c powerldap.cc -fPIC -DPIC -o .libs/powerldap.o powerldap.cc: In constructor 'PowerLDAP::PowerLDAP(const std::string&, uint16_t, bool)': powerldap.cc:12: error: 'ldap_init' was not declared in this scope powerldap.cc:19: error: 'ldap_unbind' was not declared in this scope powerldap.cc:29: error: 'ldap_unbind' was not declared in this scope powerldap.cc: In destructor 'PowerLDAP::~PowerLDAP()': powerldap.cc:38: error: 'ldap_unbind' was not declared in this scope powerldap.cc: In member function 'void PowerLDAP::simpleBind(const std::string&, const std::string&)': powerldap.cc:63: error: 'ldap_simple_bind_s' was not declared in this scope powerldap.cc: In member function 'int PowerLDAP::search(const std::string&, int, const std::string&, const char**)': powerldap.cc:73: error: 'ldap_search' was not declared in this scope make[3]: *** [powerldap.lo] Error 1 make[3]: Leaving directory `/build/buildd/pdns-2.9.21/modules/ldapbackend' make[2]: *** [install-recursive] Error 1 [...] A full build log is available at <http://buildd.debian.org/fetch.cgi?pkg=pdns&arch=alpha&ver=2.9.21-4%2Bb1&stamp=1201322902&file=log&as=raw>. According to ldap.h, these functions are each deprecated. The attached patch updates the code so that it builds with openldap 2.4; I haven't verified that it runs correctly. Alternatively, you can build with -DLDAP_DEPRECATED to get the prototypes for these deprecated functions. 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]
diff -u pdns-2.9.21/debian/changelog pdns-2.9.21/debian/changelog --- pdns-2.9.21/debian/changelog +++ pdns-2.9.21/debian/changelog @@ -1,3 +1,10 @@ +pdns (2.9.21-4.1) unstable; urgency=low + + * Non-maintainer upload. + * Patch to build with openldap 2.4. + + -- Steve Langasek <[EMAIL PROTECTED]> Mon, 28 Jan 2008 00:11:44 +0000 + pdns (2.9.21-4) unstable; urgency=low * New portuguese translation included (closes: #444219). only in patch2: unchanged: --- pdns-2.9.21.orig/modules/ldapbackend/powerldap.cc +++ pdns-2.9.21/modules/ldapbackend/powerldap.cc @@ -9,16 +9,7 @@ if( ldap_initialize( &d_ld, hosts.c_str() ) != LDAP_SUCCESS ) { - if( ( d_ld = ldap_init( hosts.c_str(), port ) ) == NULL ) - { - throw LDAPException( "Error initializing LDAP connection: " + string( strerror( errno ) ) ); - } - - if( tls && ldap_start_tls_s( d_ld, NULL, NULL ) != LDAP_SUCCESS ) - { - ldap_unbind( d_ld ); - throw( LDAPException( "Couldn't perform STARTTLS" ) ); - } + throw LDAPException( "Error initializing LDAP connection: " + string( strerror( errno ) ) ); } if( ldap_set_option( d_ld, LDAP_OPT_PROTOCOL_VERSION, &protocol ) != LDAP_OPT_SUCCESS ) @@ -26,7 +17,7 @@ protocol = LDAP_VERSION2; if( ldap_set_option( d_ld, LDAP_OPT_PROTOCOL_VERSION, &protocol ) != LDAP_OPT_SUCCESS ) { - ldap_unbind( d_ld ); + ldap_unbind_ext( d_ld, NULL, NULL ); throw LDAPException( "Couldn't set protocol version to LDAPv3 or LDAPv2" ); } } @@ -35,7 +26,7 @@ PowerLDAP::~PowerLDAP() { - ldap_unbind( d_ld ); + ldap_unbind_ext( d_ld, NULL, NULL ); } @@ -60,7 +51,10 @@ void PowerLDAP::simpleBind( const string& ldapbinddn, const string& ldapsecret ) { int err; - if( ( err = ldap_simple_bind_s( d_ld, ldapbinddn.c_str(), ldapsecret.c_str() ) ) != LDAP_SUCCESS ) + struct berval passwd; + passwd.bv_val = (char *)ldapsecret.c_str(); + passwd.bv_len = strlen(passwd.bv_val); + if( ( err = ldap_sasl_bind_s( d_ld, ldapbinddn.c_str(), LDAP_SASL_SIMPLE, &passwd, NULL, NULL, NULL ) ) != LDAP_SUCCESS ) { throw LDAPException( "Failed to bind to LDAP server: " + getError( err ) ); } @@ -69,10 +63,10 @@ int PowerLDAP::search( const string& base, int scope, const string& filter, const char** attr ) { - int msgid; - if( ( msgid = ldap_search( d_ld, base.c_str(), scope, filter.c_str(), const_cast<char**> (attr), 0 ) ) == -1 ) + int msgid, rc; + if( ( rc = ldap_search_ext( d_ld, base.c_str(), scope, filter.c_str(), const_cast<char**> (attr), 0, NULL, NULL, NULL, LDAP_NO_LIMIT, &msgid ) ) != LDAP_SUCCESS ) { - throw LDAPException( "Starting LDAP search: " + getError() ); + throw LDAPException( "Starting LDAP search: " + getError(rc) ); } return msgid;