From 4a1193dd7d3b16d8108793fca56dc11b21bd5cef Mon Sep 17 00:00:00 2001
From: Kurt Zeilenga <kurt@openldap.org>
Date: Sat, 21 Jul 2001 17:46:48 +0000
Subject: [PATCH] Sync with HEAD

---
 contrib/ldaptcl/neoXldap.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/contrib/ldaptcl/neoXldap.c b/contrib/ldaptcl/neoXldap.c
index e347962a50..a9f1a8f2b9 100644
--- a/contrib/ldaptcl/neoXldap.c
+++ b/contrib/ldaptcl/neoXldap.c
@@ -212,6 +212,11 @@ LDAP_ProcessOneSearchResult (interp, ldap, entry, destArrayNameObj, evalCodeObj)
     }
     attributeNameObj = Tcl_NewObj();
     Tcl_IncrRefCount (attributeNameObj);
+
+    /* Note that attributeName below is allocated for OL2+ libldap, so it
+       must be freed with ldap_memfree().  Test below is admittedly a hack.
+    */
+
     for (attributeName = ldap_first_attribute (ldap, entry, &ber); 
       attributeName != NULL;
       attributeName = ldap_next_attribute(ldap, entry, ber)) {
@@ -227,6 +232,9 @@ LDAP_ProcessOneSearchResult (interp, ldap, entry, destArrayNameObj, evalCodeObj)
 	    */
 	    attributeDataObj = Tcl_NewObj();
 	    Tcl_SetStringObj(attributeNameObj, attributeName, -1);
+#if LDAP_API_VERSION >= 2004
+	    ldap_memfree(attributeName);	/* free if newer API */
+#endif
 	    for (i = 0; bvals[i] != NULL; i++) {
 		Tcl_Obj *singleAttributeValueObj;
 
-- 
GitLab