Fix bug 5419: memory leak in ads_do_search_all_args() when enumerating 1000s of entries
commit64edcda438023c4c8d95f1cc5f70627bda357305
authorSteven Danneman <sdanneman@sd-ubuntu.(none)>
Sat, 26 Apr 2008 01:34:46 +0000 (25 18:34 -0700)
committerKarolin Seeger <kseeger@samba.org>
Mon, 28 Apr 2008 07:58:37 +0000 (28 09:58 +0200)
treef6c0c9f9fefe9262c06d694757239b5c938dd070
parent791a3a48fb1cacf1c3074e5a3d744be8b14f98e6
Fix bug 5419: memory leak in ads_do_search_all_args() when enumerating 1000s of entries

The ads_do_search_all_args() function attempts to string together several
LDAPMessage structures, returned across several paged ldap requests, into a
single LDAPMessage structure.  It does this by pulling entries off the second
LDAPMessage structure and appending them to the first via the OpenLDAP specific
ldap_add_result_entry() call.

The problem with this approach is it skips non-entry messages such as the
result, and controls.  These messages are leaked.

The short term solution as suggested by Volker is to replace the ads_*_entry()
calls with ads_*_message() calls so we don't leak any messages.

This fixes the leak but doesn't remove the dependence on the OpenLDAP specific
implementation of ldap_add_result_entry().
(cherry picked from commit fe9f48bfe8d31812d9644682903c04f1e93c2987)
source/include/ads_protos.h
source/libads/ldap.c