summaryrefslogtreecommitdiff
path: root/source4/dsdb
diff options
context:
space:
mode:
Diffstat (limited to 'source4/dsdb')
-rw-r--r--source4/dsdb/schema/schema_set.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/source4/dsdb/schema/schema_set.c b/source4/dsdb/schema/schema_set.c
index 305a0d94f3..e8fe7c4c65 100644
--- a/source4/dsdb/schema/schema_set.c
+++ b/source4/dsdb/schema/schema_set.c
@@ -413,9 +413,11 @@ int dsdb_set_global_schema(struct ldb_context *ldb)
/**
* Find the schema object for this ldb
+ *
+ * If reference_ctx is not NULL, then talloc_reference onto that context
*/
-struct dsdb_schema *dsdb_get_schema(struct ldb_context *ldb)
+struct dsdb_schema *dsdb_get_schema(struct ldb_context *ldb, TALLOC_CTX *reference_ctx)
{
const void *p;
struct dsdb_schema *schema;
@@ -431,7 +433,11 @@ struct dsdb_schema *dsdb_get_schema(struct ldb_context *ldb)
return NULL;
}
- return schema;
+ if (!reference_ctx) {
+ return schema;
+ } else {
+ return talloc_reference(reference_ctx, schema);
+ }
}
/**
@@ -440,7 +446,7 @@ struct dsdb_schema *dsdb_get_schema(struct ldb_context *ldb)
void dsdb_make_schema_global(struct ldb_context *ldb)
{
- struct dsdb_schema *schema = dsdb_get_schema(ldb);
+ struct dsdb_schema *schema = dsdb_get_schema(ldb, NULL);
if (!schema) {
return;
}