[SSSD] [PATCH] Add some missing ldap_memfree()

Sumit Bose sbose at redhat.com
Fri Oct 22 09:57:10 UTC 2010


Hi,

I've found a few places where we do not free the error message returned
by ldap_parse_result(). This patch should fix this.

bye,
Sumit
-------------- next part --------------
From 4b1ef24cdc4c8857cb0f7bd754c29ffeb16263f1 Mon Sep 17 00:00:00 2001
From: Sumit Bose <sbose at redhat.com>
Date: Fri, 22 Oct 2010 11:53:51 +0200
Subject: [PATCH] Add some missing ldap_memfree()

---
 src/providers/ldap/sdap_async.c            |    3 ++-
 src/providers/ldap/sdap_async_connection.c |    6 ++++--
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/providers/ldap/sdap_async.c b/src/providers/ldap/sdap_async.c
index 7fc04a6..84da288 100644
--- a/src/providers/ldap/sdap_async.c
+++ b/src/providers/ldap/sdap_async.c
@@ -863,7 +863,7 @@ static void sdap_get_generic_done(struct sdap_op *op,
     struct sdap_get_generic_state *state = tevent_req_data(req,
                                             struct sdap_get_generic_state);
     struct sysdb_attrs *attrs;
-    char *errmsg;
+    char *errmsg = NULL;
     int result;
     int ret;
 
@@ -917,6 +917,7 @@ static void sdap_get_generic_done(struct sdap_op *op,
             DEBUG(2, ("Unexpected result from ldap: %s(%d), %s\n",
                       ldap_err2string(result), result, errmsg));
         }
+        ldap_memfree(errmsg);
 
         tevent_req_done(req);
         return;
diff --git a/src/providers/ldap/sdap_async_connection.c b/src/providers/ldap/sdap_async_connection.c
index e4ca962..f73f34e 100644
--- a/src/providers/ldap/sdap_async_connection.c
+++ b/src/providers/ldap/sdap_async_connection.c
@@ -238,7 +238,7 @@ static void sdap_connect_done(struct sdap_op *op,
     struct tevent_req *req = talloc_get_type(pvt, struct tevent_req);
     struct sdap_connect_state *state = tevent_req_data(req,
                                           struct sdap_connect_state);
-    char *errmsg;
+    char *errmsg = NULL;
     char *tlserr;
     int ret;
     int optret;
@@ -260,6 +260,7 @@ static void sdap_connect_done(struct sdap_op *op,
 
     DEBUG(3, ("START TLS result: %s(%d), %s\n",
               ldap_err2string(state->result), state->result, errmsg));
+    ldap_memfree(errmsg);
 
     if (ldap_tls_inplace(state->sh->ldap)) {
         DEBUG(9, ("SSL/TLS handler already in place.\n"));
@@ -420,7 +421,7 @@ static void simple_bind_done(struct sdap_op *op,
     struct tevent_req *req = talloc_get_type(pvt, struct tevent_req);
     struct simple_bind_state *state = tevent_req_data(req,
                                             struct simple_bind_state);
-    char *errmsg;
+    char *errmsg = NULL;
     int ret;
     LDAPControl **response_controls;
     int c;
@@ -502,6 +503,7 @@ static void simple_bind_done(struct sdap_op *op,
     ret = LDAP_SUCCESS;
 done:
     ldap_controls_free(response_controls);
+    ldap_memfree(errmsg);
 
     if (ret == LDAP_SUCCESS) {
         tevent_req_done(req);
-- 
1.7.2.3



More information about the sssd-devel mailing list