Commit 46969c77 authored by Quanah Gibson-Mount's avatar Quanah Gibson-Mount
Browse files

Fix memory leaks from ITS#6310 (logged as ITS#6387)

parent 62295c09
...@@ -823,6 +823,7 @@ static int ...@@ -823,6 +823,7 @@ static int
merge_entry( merge_entry(
Operation *op, Operation *op,
Entry *e, Entry *e,
int dup,
struct berval* query_uuid ) struct berval* query_uuid )
{ {
int rc; int rc;
...@@ -836,7 +837,8 @@ merge_entry( ...@@ -836,7 +837,8 @@ merge_entry(
slap_callback cb = { NULL, slap_null_cb, NULL, NULL }; slap_callback cb = { NULL, slap_null_cb, NULL, NULL };
e = entry_dup( e ); if ( dup )
e = entry_dup( e );
attr = e->e_attrs; attr = e->e_attrs;
e->e_attrs = NULL; e->e_attrs = NULL;
...@@ -2286,7 +2288,7 @@ cache_entries( ...@@ -2286,7 +2288,7 @@ cache_entries(
remove_query_and_data( op_tmp, rs, cm, &crp_uuid ); remove_query_and_data( op_tmp, rs, cm, &crp_uuid );
} }
return_val = merge_entry(op_tmp, e, query_uuid); return_val = merge_entry(op_tmp, e, 0, query_uuid);
ldap_pvt_thread_mutex_lock(&cm->cache_mutex); ldap_pvt_thread_mutex_lock(&cm->cache_mutex);
cm->cur_entries += return_val; cm->cur_entries += return_val;
Debug( pcache_debug, Debug( pcache_debug,
...@@ -2473,6 +2475,12 @@ pcache_response( ...@@ -2473,6 +2475,12 @@ pcache_response(
&& si->qtemp->limitttl ) && si->qtemp->limitttl )
{ {
si->caching_reason = PC_SIZELIMIT; si->caching_reason = PC_SIZELIMIT;
Entry *e;
for (;si->head; si->head=e) {
e = si->head->e_private;
si->head->e_private = NULL;
entry_free(si->head);
}
} }
} else if ( si->qtemp->negttl && !si->count && !si->over && } else if ( si->qtemp->negttl && !si->count && !si->over &&
...@@ -3191,7 +3199,7 @@ refresh_merge( Operation *op, SlapReply *rs ) ...@@ -3191,7 +3199,7 @@ refresh_merge( Operation *op, SlapReply *rs )
/* No local entry, just add it. FIXME: we are not checking /* No local entry, just add it. FIXME: we are not checking
* the cache entry limit here * the cache entry limit here
*/ */
merge_entry( op, rs->sr_entry, &ri->ri_q->q_uuid ); merge_entry( op, rs->sr_entry, 1, &ri->ri_q->q_uuid );
} else { } else {
/* Entry exists, update it */ /* Entry exists, update it */
Entry ne; Entry ne;
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment