ldb:ldb_index.c - fix some memory leaks
authorMatthias Dieter Wallnöfer <mdw@samba.org>
Wed, 20 Oct 2010 12:27:04 +0000 (14:27 +0200)
committerMatthias Dieter Wallnöfer <mdw@samba.org>
Wed, 20 Oct 2010 13:11:49 +0000 (13:11 +0000)
Autobuild-User: Matthias Dieter Wallnöfer <mdw@samba.org>
Autobuild-Date: Wed Oct 20 13:11:49 UTC 2010 on sn-devel-104

source4/lib/ldb/ldb_tdb/ldb_index.c

index fc2d9a05aacf956a1b6648173fc6fbd444c19076..71cffb90b3449aae7cf23bffb62423db3bb0fe9c 100644 (file)
@@ -179,6 +179,7 @@ normal_index:
 
        ret = ltdb_search_dn1(module, dn, msg);
        if (ret != LDB_SUCCESS) {
+               talloc_free(msg);
                return ret;
        }
 
@@ -412,7 +413,10 @@ static struct ldb_dn *ltdb_index_key(struct ldb_context *ldb,
        }
        if (ldb_should_b64_encode(ldb, &v)) {
                char *vstr = ldb_base64_encode(ldb, (char *)v.data, v.length);
-               if (!vstr) return NULL;
+               if (!vstr) {
+                       talloc_free(attr_folded);
+                       return NULL;
+               }
                ret = ldb_dn_new_fmt(ldb, ldb, "%s:%s::%s", LTDB_INDEX, attr_folded, vstr);
                talloc_free(vstr);
        } else {
@@ -962,6 +966,7 @@ static int ltdb_index_filter(const struct dn_list *dn_list,
 
                ret = ldb_module_send_entry(ac->req, msg, NULL);
                if (ret != LDB_SUCCESS) {
+                       talloc_free(msg);
                        ac->request_terminated = true;
                        return ret;
                }