From: Mark Valence Date: Tue, 6 Jun 2000 05:21:14 +0000 (+0000) Subject: Fix memory leak in new schema code. X-Git-Tag: LDBM_PRE_GIANT_RWLOCK~2740 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=78f24c1d89bba07c0a1919581b0da64f137cb59b;p=openldap Fix memory leak in new schema code. --- diff --git a/servers/slapd/back-ldap/search.c b/servers/slapd/back-ldap/search.c index 6ffc05d019..a4eac153c3 100644 --- a/servers/slapd/back-ldap/search.c +++ b/servers/slapd/back-ldap/search.c @@ -157,15 +157,15 @@ ldap_send_entry( ent.e_private = 0; attrp = &ent.e_attrs; - for (a = ldap_first_attribute(lc->ld, e, &ber); a; - a = ldap_next_attribute(lc->ld, e, ber)) { + for ( a = ldap_first_attribute(lc->ld, e, &ber); + a != NULL; + a = ldap_next_attribute(lc->ld, e, ber)) + { attr = (Attribute *)ch_malloc( sizeof(Attribute) ); + if (attr == NULL) + continue; attr->a_next = 0; #ifdef SLAPD_SCHEMA_NOT_COMPAT - /* FIXME: we assume here that the local server knows about - * all the attributes that the remote server might send. - * How should this really be handled? - */ slap_str2ad(a, &attr->a_desc, &text); #else attr->a_type = ch_strdup(a); @@ -181,7 +181,9 @@ ldap_send_entry( for (;ent.e_attrs;) { attr=ent.e_attrs; ent.e_attrs = attr->a_next; -#ifndef SLAPD_SCHEMA_NOT_COMPAT +#ifdef SLAPD_SCHEMA_NOT_COMPAT + ad_free(attr->a_desc, 1); +#else free(attr->a_type); #endif if (attr->a_vals != &dummy)