From 980eae07f9d85f627aab01090880e25cd21da55d Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Wed, 5 Oct 2016 10:33:26 +0200 Subject: [PATCH] s3-libads: Do not leak the msg on error MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit ldap_search_ext_s manpage states: Note that res parameter of ldap_search_ext_s should be freed with ldap_msgfree() regardless of return value of these functions. Signed-off-by: Andreas Schneider Reviewed-by: Ralph Boehme Autobuild-User(master): Ralph Böhme Autobuild-Date(master): Wed Mar 8 14:59:35 CET 2017 on sn-devel-144 --- source3/libads/ldap.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/source3/libads/ldap.c b/source3/libads/ldap.c index 34d250fda50..c70cdeb5163 100644 --- a/source3/libads/ldap.c +++ b/source3/libads/ldap.c @@ -1036,6 +1036,11 @@ done: ber_bvfree(ext_bv); } + if (rc != LDAP_SUCCESS && *res != NULL) { + ads_msgfree(ads, *res); + *res = NULL; + } + /* if/when we decide to utf8-encode attrs, take out this next line */ TALLOC_FREE(search_attrs); @@ -1086,9 +1091,6 @@ static ADS_STATUS ads_do_paged_search(ADS_STRUCT *ads, const char *bind_path, status = ads_do_paged_search_args(ads, bind_path, scope, expr, attrs, args, &res2, &count, &cookie); if (!ADS_ERR_OK(status)) { - /* Ensure we free all collected results */ - ads_msgfree(ads, *res); - *res = NULL; break; } -- 2.47.3