]> git.sur5r.net Git - openldap/commitdiff
Call ldap_memfree(attributeName) for returns from ldap_first_attribute()
authorRandy Kunkee <kunkee@openldap.org>
Tue, 10 Jul 2001 22:11:57 +0000 (22:11 +0000)
committerRandy Kunkee <kunkee@openldap.org>
Tue, 10 Jul 2001 22:11:57 +0000 (22:11 +0000)
and ldap_next_attribute if using newer interface.  Current test for this
is an #if LDAP_API_VERSION >= 2004.

contrib/ldaptcl/neoXldap.c

index e347962a503fef021b604d58a286356f7676f466..a9f1a8f2b9a271f650057a5bd9bea97c268b7b86 100644 (file)
@@ -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;