mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-02-23 14:09:39 +08:00
Memory leaks: Values from ldap_get_dn were not freed.
This commit is contained in:
parent
ede86e4da8
commit
5a14af5f84
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user