s4:lib/registry/ldb.c - fix memory handling in "ldb_open_key"
[ira/wip.git] / source4 / lib / registry / ldb.c
index b2b1e745f344c150d0762b72a0e9892c9758c33f..f0a1c431c50ef6d9978a6d8b4acd24efac96b3e8 100644 (file)
@@ -522,12 +522,15 @@ static WERROR ldb_open_key(TALLOC_CTX *mem_ctx, const struct hive_key *h,
        }
 
        newkd = talloc_zero(mem_ctx, struct ldb_key_data);
+       W_ERROR_HAVE_NO_MEMORY(newkd);
        newkd->key.ops = &reg_backend_ldb;
        newkd->ldb = talloc_reference(newkd, kd->ldb);
-       newkd->dn = ldb_dn_copy(mem_ctx, res->msgs[0]->dn);
+       newkd->dn = ldb_dn_copy(newkd, res->msgs[0]->dn);
        newkd->classname = talloc_steal(newkd,
                                        ldb_msg_find_attr_as_string(res->msgs[0], "classname", NULL);
 
+       talloc_free(res);
+
        *key = (struct hive_key *)newkd;
 
        return WERR_OK;