From 8c7e6e71b435857802f12c8de09d34b052880eb6 Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Thu, 28 Apr 2011 17:21:32 +0200 Subject: Do not leak LDAP paging controls --- src/providers/ldap/sdap_async.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/providers/ldap/sdap_async.c') diff --git a/src/providers/ldap/sdap_async.c b/src/providers/ldap/sdap_async.c index 5e05cb742..1e083553d 100644 --- a/src/providers/ldap/sdap_async.c +++ b/src/providers/ldap/sdap_async.c @@ -921,6 +921,8 @@ static errno_t sdap_get_generic_step(struct tevent_req *req) state->scope, state->filter, discard_const(state->attrs), false, m_controls, NULL, NULL, 0, &msgid); + ldap_control_free(page_control); + m_controls[0] = NULL; if (lret != LDAP_SUCCESS) { DEBUG(3, ("ldap_search_ext failed: %s\n", ldap_err2string(lret))); if (lret == LDAP_SERVER_DOWN) { @@ -1038,6 +1040,7 @@ static void sdap_get_generic_done(struct sdap_op *op, lret = ldap_parse_pageresponse_control(state->sh->ldap, page_control, &total_count, &cookie); + ldap_controls_free(returned_controls); if (lret != LDAP_SUCCESS) { DEBUG(1, ("Could not determine page control")); tevent_req_error(req, EIO); @@ -1068,6 +1071,8 @@ static void sdap_get_generic_done(struct sdap_op *op, return; } + /* The cookie must be freed even if len == 0 */ + ber_memfree(cookie.bv_val); /* This was the last page. We're done */ -- cgit