]> git.sur5r.net Git - openldap/commitdiff
Memory leaks: Values from ldap_get_dn were not freed.
authorHallvard Furuseth <hallvard@openldap.org>
Wed, 11 Nov 1998 22:10:05 +0000 (22:10 +0000)
committerHallvard Furuseth <hallvard@openldap.org>
Wed, 11 Nov 1998 22:10:05 +0000 (22:10 +0000)
clients/ud/find.c
clients/ud/mod.c

index 90c449c05607b2fdde8a30dc62922205f5df9ac2..caa8f8ef697c89fc27fbff89eecace3979476b4c 100644 (file)
@@ -235,7 +235,10 @@ int quiet;
                        ldap_set_option(ld, LDAP_OPT_DEREF, &savederef);
                        return(NULL);
                } else if (matches == 1) {
-                       if (ldap_search_s(ld, ldap_get_dn(ld, ldap_first_entry(ld, res)), LDAP_SCOPE_BASE, "objectClass=*", read_attrs, FALSE, &res) != LDAP_SUCCESS) {
+                       dn = ldap_get_dn(ld, ldap_first_entry(ld, res));
+                       rc = ldap_search_s(ld, dn, LDAP_SCOPE_BASE, "objectClass=*", read_attrs, FALSE, &res);
+                       Free(dn);
+                       if (rc != LDAP_SUCCESS) {
                                int ld_errno = 0;
                                ldap_get_option(ld, LDAP_OPT_ERROR_NUMBER, &ld_errno);
                                if (ld_errno == LDAP_UNAVAILABLE)
@@ -301,7 +304,10 @@ int quiet;
                                fflush(stdout);
                                fetch_buffer(response, sizeof(response), stdin);
                                if ((response[0] == 'n') || (response[0] == 'N'))
+                               {
+                                       Free(dn);
                                        return(NULL);
+                               }
                        }
 #ifdef DEBUG
                        if (debug & D_FIND) {
@@ -320,7 +326,7 @@ int quiet;
                        if (ldap_search_s(ld, dn, LDAP_SCOPE_BASE, "objectClass=*", read_attrs, FALSE, &res) != LDAP_SUCCESS) {
                                ldap_perror(ld, "ldap_search_s");
                                ldap_msgfree(res);
-                               return(NULL);
+                               res = NULL;
                        }
                        Free(dn);
                        return(res);
index b4a7c1f75e4d49272b600acf329d769f14925c8a..6b26ccd3c7a25bbe5f19d94078686f5acd62adc8 100644 (file)
@@ -21,6 +21,7 @@
 #include <lber.h>
 #include <ldap.h>
 #include "ud.h"
+extern void Free();
 
 extern struct entry Entry; 
 extern int verbose;
@@ -497,6 +498,7 @@ mail_is_good:
                        }
                        tmp = ldap_get_dn(ld, elmp);
                        strcpy(buffer, tmp);
+                       Free(tmp);
                        (void) ldap_msgfree(lmp);
                        break;
                }