s4:lib/registry/ldb.c - free some "msg" objects earlier through explicit "talloc_free"s
authorMatthias Dieter Wallnöfer <mdw@samba.org>
Thu, 1 Jul 2010 14:35:12 +0000 (16:35 +0200)
committerMatthias Dieter Wallnöfer <mdw@samba.org>
Thu, 1 Jul 2010 14:35:12 +0000 (16:35 +0200)
No other functional change

source4/lib/registry/ldb.c

index 122f565813fe0f4897a9ea06083dd997ac8c2f82..c14ee70ace72a385556488222b42a71ca536e118 100644 (file)
@@ -417,8 +417,10 @@ static WERROR ldb_get_default_value(TALLOC_CTX *mem_ctx,
                return WERR_FOOBAR;
        }
 
-       if (res->count == 0 || res->msgs[0]->num_elements == 0)
+       if (res->count == 0 || res->msgs[0]->num_elements == 0) {
+               talloc_free(res);
                return WERR_BADFILE;
+       }
 
        if ((data_type != NULL) && (data != NULL)) {
                reg_ldb_unpack_value(mem_ctx, res->msgs[0], name, data_type,
@@ -647,6 +649,9 @@ static WERROR ldb_del_value(TALLOC_CTX *mem_ctx, struct hive_key *key,
                ldb_msg_add_empty(msg, "type", LDB_FLAG_MOD_DELETE, NULL);
 
                ret = ldb_modify(kd->ldb, msg);
+
+               talloc_free(msg);
+
                if (ret != LDB_SUCCESS) {
                        DEBUG(1, ("ldb_del_value: %s\n", ldb_errstring(kd->ldb)));
                        return WERR_FOOBAR;
@@ -758,6 +763,8 @@ static WERROR ldb_del_key(TALLOC_CTX *mem_ctx, const struct hive_key *key,
                        }
                }
        }
+       talloc_free(res_keys);
+       talloc_free(res_vals);
 
        /* Delete the key itself */
        ret = ldb_delete(c, ldb_path);
@@ -836,6 +843,8 @@ static WERROR ldb_set_value(struct hive_key *parent,
                ret = LDB_SUCCESS;
        }
 
+       talloc_free(msg);
+
        if (ret != LDB_SUCCESS) {
                DEBUG(1, ("ldb_set_value: %s\n", ldb_errstring(kd->ldb)));
                talloc_free(mem_ctx);