Your message dated Wed, 30 Jan 2008 09:47:03 +0000
with message-id <[EMAIL PROTECTED]>
and subject line Bug#462868: fixed in newpki-server 2.0.0+rc1-10
has caused the attached Bug report to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what I am
talking about this indicates a serious mail system misconfiguration
somewhere.  Please contact me immediately.)

Debian bug tracking system administrator
(administrator, Debian Bugs database)

--- Begin Message ---
Package: newpki-server
Version: 2.0.0+rc1-9
Severity: serious
Justification: FTBFS

Hi Pierre,

newpki-server now fails to build in unstable and testing, because
libldap2-dev has been updated to the openldap 2.4 version and
various ldap_*_s() functions are deprecated:

[...]
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -DLOCALEDIR=\"/usr/share/locale\" 
-I/usr/include/newpki  -Wall -g -O2 -MT newpki_server-ClientLDAP.o -MD -MP -MF 
".deps/newpki_server-ClientLDAP.Tpo" -c -o newpki_server-ClientLDAP.o `test -f 
'./ClientLDAP.cpp' || echo './'`./ClientLDAP.cpp; \
        then mv -f ".deps/newpki_server-ClientLDAP.Tpo" 
".deps/newpki_server-ClientLDAP.Po"; else rm -f 
".deps/newpki_server-ClientLDAP.Tpo"; exit 1; fi
./ClientLDAP.cpp: In member function 'void ClientLDAP::Disconnect()':
./ClientLDAP.cpp:79: error: 'ldap_unbind_s' was not declared in this scope
./ClientLDAP.cpp: In member function 'bool ClientLDAP::Search(const mString&, 
mVector<LdapResult>&, int, int)':
./ClientLDAP.cpp:108: error: 'ldap_search_s' was not declared in this scope
./ClientLDAP.cpp: In member function 'void 
ClientLDAP::AddCurrentMessage(mVector<LdapResult>&, LDAPMessage*)':
./ClientLDAP.cpp:186: error: 'ldap_get_values' was not declared in this scope
./ClientLDAP.cpp:199: error: 'ldap_value_free' was not declared in this scope
./ClientLDAP.cpp: In member function 'bool ClientLDAP::Reconnect()':
./ClientLDAP.cpp:215: error: 'ldap_init' was not declared in this scope
./ClientLDAP.cpp:225: error: 'ldap_bind_s' was not declared in this scope
./ClientLDAP.cpp:229: error: 'ldap_bind_s' was not declared in this scope
./ClientLDAP.cpp:259: error: 'ldap_bind_s' was not declared in this scope
./ClientLDAP.cpp:263: error: 'ldap_bind_s' was not declared in this scope
make[3]: *** [newpki_server-ClientLDAP.o] Error 1
[...]

A full build log is available at
<http://buildd.debian.org/fetch.cgi?pkg=newpki-server&arch=alpha&ver=2.0.0%2Brc1-9%2Bb1&stamp=1201284341&file=log&as=raw>.

These functions are all listed as deprecated in ldap.h, and are only
available if you build with -DLDAP_DEPRECATED.  Since they may be dropped
completely in some future version, it would probably be better to port to
the new functions now, as documented in ldap.h.

The attached patch attempts to implement this.  I've verified that it
builds, but haven't tested that it works.

Thanks,
-- 
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 newpki-server-2.0.0+rc1/debian/changelog newpki-server-2.0.0+rc1/debian/changelog
--- newpki-server-2.0.0+rc1/debian/changelog
+++ newpki-server-2.0.0+rc1/debian/changelog
@@ -1,3 +1,10 @@
+newpki-server (2.0.0+rc1-9.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Port to openldap 2.4.
+
+ -- Steve Langasek <[EMAIL PROTECTED]>  Sun, 27 Jan 2008 12:54:08 -0800
+
 newpki-server (2.0.0+rc1-9) unstable; urgency=low
 
   * Apply patch from Michael Ablassmeier:
only in patch2:
unchanged:
--- newpki-server-2.0.0+rc1.orig/publication/ldap/src/publication_ldap.cpp
+++ newpki-server-2.0.0+rc1/publication/ldap/src/publication_ldap.cpp
@@ -83,7 +83,7 @@
 
 	if(m_Connection)
 	{
-		ldap_unbind_s(m_Connection);
+		ldap_unbind_ext_s(m_Connection, NULL, NULL);
 		m_Connection = NULL;
 	}
 
@@ -94,8 +94,9 @@
 	const char * strPort;
 	unsigned int Port;
 	const char * Username;
-	const char * Password;
+	struct berval Password;
 	int protoVersion;
+	char * uri = NULL;
 
 	Server = Options.Get("Server");
 	strPort = Options.Get("Port");
@@ -112,19 +113,19 @@
 		return 0;
 	}
 	Username = Options.Get("Username");
-	Password = Options.Get("Password");
+	Password.bv_val = (char*)Options.Get("Password");
+	Password.bv_len = strlen(Password.bv_val);
 
 
-
-
-	m_Connection = ldap_init((char*)Server, Port);
+	asprintf(&uri, "ldap://%s:%u";, (char*)Server, Port);
+	ldap_initialize(&m_Connection, uri);
 	if(!m_Connection)
 	{
 		LastError = ldap_err2string(LDAP_LAST_ERROR);
 		return 0;
 	}
 
-	LdapRet = ldap_bind_s(m_Connection, (char*)Username, (char*)Password, LDAP_AUTH_SIMPLE);
+	LdapRet = ldap_sasl_bind_s(m_Connection, (char*)Username, LDAP_SASL_SIMPLE, &Password, NULL, NULL, NULL);
 	if(LdapRet != LDAP_SUCCESS)
 	{
 		/* Wrong protocol version try another one */
@@ -135,7 +136,7 @@
 			if(LdapRet != LDAP_SUCCESS)
 			{
 				LastError = ldap_err2string(LdapRet);
-				ldap_unbind_s(m_Connection);
+				ldap_unbind_ext_s(m_Connection, NULL, NULL);
 				m_Connection = NULL;
 				return 0;
 			}
@@ -145,16 +146,16 @@
 			if(LdapRet != LDAP_SUCCESS)
 			{
 				LastError = ldap_err2string(LdapRet);
-				ldap_unbind_s(m_Connection);
+				ldap_unbind_ext_s(m_Connection, NULL, NULL);
 				m_Connection = NULL;
 				return 0;
 			}
 			/* Retry to connect */
-			LdapRet = ldap_bind_s(m_Connection, (char*)Username, (char*)Password, LDAP_AUTH_SIMPLE);
+			LdapRet = ldap_sasl_bind_s(m_Connection, (char*)Username, LDAP_SASL_SIMPLE, &Password, NULL, NULL, NULL);
 			if(LdapRet != LDAP_SUCCESS)
 			{
 				LastError = ldap_err2string(LdapRet);
-				ldap_unbind_s(m_Connection);
+				ldap_unbind_ext_s(m_Connection, NULL, NULL);
 				m_Connection = NULL;
 				return 0;
 			}
@@ -162,7 +163,7 @@
 		else
 		{
 			LastError = ldap_err2string(LdapRet);
-			ldap_unbind_s(m_Connection);
+			ldap_unbind_ext_s(m_Connection, NULL, NULL);
 			m_Connection = NULL;
 			return 0;
 		}
@@ -177,7 +178,7 @@
 	
 	if(m_Connection)
 	{
-		ldap_unbind_s(m_Connection);
+		ldap_unbind_ext_s(m_Connection, NULL, NULL);
 		m_Connection = NULL;
 	}
 	ERR_remove_state(0);
@@ -507,7 +508,7 @@
 	
 
 	*pMsg=NULL;
-	if((LdapRet = ldap_search_s(m_Connection, (char*)LdapBase.c_str(), LDAP_SCOPE_SUBTREE, (char*)strFilters.c_str(), NULL, 0, pMsg)) != LDAP_SUCCESS)
+	if((LdapRet = ldap_search_ext_s(m_Connection, (char*)LdapBase.c_str(), LDAP_SCOPE_SUBTREE, (char*)strFilters.c_str(), NULL, 0, NULL, NULL, NULL, LDAP_NO_LIMIT, pMsg)) != LDAP_SUCCESS)
 	{
 		if(*pMsg)
 		{
@@ -521,7 +522,7 @@
 				return 0;
 			}
 
-			if((LdapRet = ldap_search_s(m_Connection, (char*)LdapBase.c_str(), LDAP_SCOPE_SUBTREE, (char*)strFilters.c_str(), NULL, 0, pMsg)) != LDAP_SUCCESS)
+			if((LdapRet = ldap_search_ext_s(m_Connection, (char*)LdapBase.c_str(), LDAP_SCOPE_SUBTREE, (char*)strFilters.c_str(), NULL, 0, NULL, NULL, NULL, LDAP_NO_LIMIT, pMsg)) != LDAP_SUCCESS)
 			{
 				if(*pMsg)
 				{
@@ -628,7 +629,7 @@
 		mString::Encode("ISO-8859-1", "UTF-8", RDN, strRDN);
 
 
-	if((LdapRet = ldap_modify_s(m_Connection, (char*)strRDN.c_str(), Mods)) != LDAP_SUCCESS)
+	if((LdapRet = ldap_modify_ext_s(m_Connection, (char*)strRDN.c_str(), Mods, NULL, NULL)) != LDAP_SUCCESS)
 	{
 		if(LdapRet == LDAP_SERVER_DOWN)
 		{
@@ -637,7 +638,7 @@
 				return 0;
 			}
 
-			if((LdapRet = ldap_modify_s(m_Connection, (char*)strRDN.c_str(), Mods)) != LDAP_SUCCESS)
+			if((LdapRet = ldap_modify_ext_s(m_Connection, (char*)strRDN.c_str(), Mods, NULL, NULL)) != LDAP_SUCCESS)
 			{
 				LastError = ldap_err2string(LdapRet);
 				return 0;
@@ -684,7 +685,7 @@
 	char * Name;
 	LDAPMessage* currMsg;
 	char * attrName;
-	char ** attrValue;
+	struct berval ** attrValue;
 	BerElement* ptr;
 	int currNumMatch;
 	int maxNumMatch;
@@ -753,18 +754,18 @@
 					}
 					if( (pos = Dn.SeekEntryName(FixedName, HASHTABLE_NOT_FOUND)) != HASHTABLE_NOT_FOUND )
 					{
-						attrValue = ldap_get_values(m_Connection, currMsg, attrName);
+						attrValue = ldap_get_values_len(m_Connection, currMsg, attrName);
 						if(attrValue)
 						{
 							Value = Dn.Get(pos);
 							if(Value)
 							{
-								if(stricmp(Value, *attrValue) == 0)
+								if(stricmp(Value, attrValue[0]->bv_val) == 0)
 								{
 									currNumMatch++;
 								}
 							}
-							ldap_value_free(attrValue);
+							ldap_value_free_len(attrValue);
 						}
 					}
 					ldap_memfree(attrName);
only in patch2:
unchanged:
--- newpki-server-2.0.0+rc1.orig/src/ClientLDAP.cpp
+++ newpki-server-2.0.0+rc1/src/ClientLDAP.cpp
@@ -76,7 +76,7 @@
 {
 	if(m_Connection)
 	{
-		ldap_unbind_s(m_Connection);
+		ldap_unbind_ext_s(m_Connection, NULL, NULL);
 		m_Connection = NULL;
 	}
 }
@@ -105,7 +105,7 @@
 		strSearch = SearchString;
 
 	pMsg=NULL;
-	if((LdapRet = ldap_search_s(m_Connection, (char*)m_ldap_base.c_str(), LDAP_SCOPE_SUBTREE, (char*)strSearch.c_str(), NULL, 0, &pMsg)) != LDAP_SUCCESS)
+	if((LdapRet = ldap_search_ext_s(m_Connection, (char*)m_ldap_base.c_str(), LDAP_SCOPE_SUBTREE, (char*)strSearch.c_str(), NULL, 0, NULL, NULL, NULL, LDAP_NO_LIMIT, &pMsg)) != LDAP_SUCCESS)
 	{
 		// Should we try to reconnect
 		switch(LdapRet)
@@ -118,7 +118,7 @@
 				}
 				ldap_set_option(m_Connection, LDAP_OPT_SIZELIMIT, (void *)&MaxResults);
 				ldap_set_option(m_Connection, LDAP_OPT_TIMELIMIT, (void *)&MaxTime);
-				if((LdapRet = ldap_search_s(m_Connection, (char*)m_ldap_base.c_str(), LDAP_SCOPE_SUBTREE, (char*)strSearch.c_str(), NULL, 0, &pMsg)) != LDAP_SUCCESS)
+				if((LdapRet = ldap_search_ext_s(m_Connection, (char*)m_ldap_base.c_str(), LDAP_SCOPE_SUBTREE, (char*)strSearch.c_str(), NULL, 0, NULL, NULL, NULL, LDAP_NO_LIMIT, &pMsg)) != LDAP_SUCCESS)
 				{
 					NEWPKIerr(PKI_ERROR_TXT, ERROR_LDAP);
 					ERR_add_error_data(2, "ldap_search_s : ", ldap_err2string(LdapRet));
@@ -159,7 +159,7 @@
 	LdapResult newResult;
 	char * Name;
 	char * attrName;
-	char ** attrValue;
+	struct berval ** attrValue;
 	BerElement* ptr;
 
 	// The DN
@@ -183,7 +183,7 @@
 	{
 		if(!strstr(attrName, ";binary"))
 		{
-			attrValue = ldap_get_values(m_Connection, currMsg, attrName);
+			attrValue = ldap_get_values_len(m_Connection, currMsg, attrName);
 			if(attrValue)
 			{
 				// Did we already find the attribute UID and is this one
@@ -191,12 +191,12 @@
 				if(!newResult.get_uid().size() && m_ldap_attr_name == attrName)
 				{
 					if(m_utf8)
-						mString::Encode("UTF-8", "ISO-8859-1", *attrValue, newResult.get_uid());
+						mString::Encode("UTF-8", "ISO-8859-1", attrValue[0]->bv_val, newResult.get_uid());
 					else
-						newResult.set_uid(*attrValue);
+						newResult.set_uid(attrValue[0]->bv_val);
 				}
-				AddObject(newResult.get_objects(), attrName, *attrValue);
-				ldap_value_free(attrValue);
+				AddObject(newResult.get_objects(), attrName, attrValue[0]->bv_val);
+				ldap_value_free_len(attrValue);
 			}
 		}
 		ldap_memfree(attrName);
@@ -209,10 +209,12 @@
 {
 	LDAP_RC_TYPE LdapRet;
 	int protoVersion;
+	char *uri = NULL;
 
 	Disconnect();
 
-	m_Connection = ldap_init((char*)m_ldap_server.c_str(), m_ldap_port);
+	asprintf(&uri, "ldap://%s:%u";, m_ldap_server.c_str(), m_ldap_port);
+	ldap_initialize(&m_Connection, uri);
 	if(!m_Connection)
 	{
 		NEWPKIerr(PKI_ERROR_TXT, ERROR_LDAP);
@@ -222,11 +224,14 @@
 
 	if(m_ldap_username.size())
 	{
-		LdapRet = ldap_bind_s(m_Connection, (char*)m_ldap_username.c_str(), (char*)m_ldap_password.c_str(), LDAP_AUTH_SIMPLE);
+		struct berval passwd;
+		passwd.bv_val = (char *)m_ldap_password.c_str();
+		passwd.bv_len = strlen(passwd.bv_val);
+		LdapRet = ldap_sasl_bind_s(m_Connection, (char*)m_ldap_username.c_str(), LDAP_SASL_SIMPLE, &passwd, NULL, NULL, NULL);
 	}
 	else
 	{
-		LdapRet = ldap_bind_s(m_Connection, NULL, NULL, LDAP_AUTH_SIMPLE);
+		LdapRet = ldap_sasl_bind_s(m_Connection, NULL, LDAP_SASL_SIMPLE, NULL, NULL, NULL, NULL);
 	}
 
 	if(LdapRet != LDAP_SUCCESS)
@@ -256,16 +261,19 @@
 			/* Retry to connect */
 			if(m_ldap_username.size())
 			{
-				LdapRet = ldap_bind_s(m_Connection, (char*)m_ldap_username.c_str(), (char*)m_ldap_password.c_str(), LDAP_AUTH_SIMPLE);
+				struct berval passwd;
+				passwd.bv_val = (char *)m_ldap_password.c_str();
+				passwd.bv_len = strlen(passwd.bv_val);
+				LdapRet = ldap_sasl_bind_s(m_Connection, (char*)m_ldap_username.c_str(), LDAP_SASL_SIMPLE, &passwd, NULL, NULL, NULL);
 			}
 			else
 			{
-				LdapRet = ldap_bind_s(m_Connection, NULL, NULL, LDAP_AUTH_SIMPLE);
+				LdapRet = ldap_sasl_bind_s(m_Connection, NULL, LDAP_SASL_SIMPLE, NULL, NULL, NULL, NULL);
 			}
 			if(LdapRet != LDAP_SUCCESS)
 			{
 				NEWPKIerr(PKI_ERROR_TXT, ERROR_LDAP);
-				ERR_add_error_data(2, "ldap_bind_s : ", ldap_err2string(LdapRet));
+				ERR_add_error_data(2, "ldap_sasl_bind_s : ", ldap_err2string(LdapRet));
 				Disconnect();
 				return false;
 			}
@@ -273,7 +281,7 @@
 		else
 		{
 			NEWPKIerr(PKI_ERROR_TXT, ERROR_LDAP);
-			ERR_add_error_data(2, "ldap_bind_s : ", ldap_err2string(LdapRet));
+			ERR_add_error_data(2, "ldap_sasl_bind_s : ", ldap_err2string(LdapRet));
 			Disconnect();
 			return false;
 		}

--- End Message ---
--- Begin Message ---
Source: newpki-server
Source-Version: 2.0.0+rc1-10

We believe that the bug you reported is fixed in the latest version of
newpki-server, which is due to be installed in the Debian FTP archive:

newpki-server_2.0.0+rc1-10.diff.gz
  to pool/main/n/newpki-server/newpki-server_2.0.0+rc1-10.diff.gz
newpki-server_2.0.0+rc1-10.dsc
  to pool/main/n/newpki-server/newpki-server_2.0.0+rc1-10.dsc
newpki-server_2.0.0+rc1-10_amd64.deb
  to pool/main/n/newpki-server/newpki-server_2.0.0+rc1-10_amd64.deb



A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [EMAIL PROTECTED],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Pierre Chifflier <[EMAIL PROTECTED]> (supplier of updated newpki-server package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [EMAIL PROTECTED])


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Format: 1.7
Date: Wed, 30 Jan 2008 10:40:03 +0100
Source: newpki-server
Binary: newpki-server
Architecture: source amd64
Version: 2.0.0+rc1-10
Distribution: unstable
Urgency: medium
Maintainer: Pierre Chifflier <[EMAIL PROTECTED]>
Changed-By: Pierre Chifflier <[EMAIL PROTECTED]>
Description: 
 newpki-server - PKI based on the OpenSSL low-level API (server package)
Closes: 462855 462868
Changes: 
 newpki-server (2.0.0+rc1-10) unstable; urgency=medium
 .
   * Apply patch from Steve Langasek to update LDAP API
     (Closes: #462868, #462855)
   * Urgency medium because above bugs are RC
   * Bump standards version (no changes)
   * Switch to quilt
   * Convert copyright file to UTF-8
Files: 
 1bc14fabebcb9677898b59eac1e82f6a 750 net optional 
newpki-server_2.0.0+rc1-10.dsc
 ee55ea92765b38a335d743c17ad891f9 48678 net optional 
newpki-server_2.0.0+rc1-10.diff.gz
 642ea5adbc2771a1b8ade95c90e98393 396192 net optional 
newpki-server_2.0.0+rc1-10_amd64.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFHoEZ0twVrWo1fQMsRAs7lAJ43zB9A+RJg5tB+VLp7M5RSWFpZhwCgtJCk
zs6PWzN41TLdzDat1cIese8=
=Rjh9
-----END PGP SIGNATURE-----



--- End Message ---

Reply via email to