mirror of
https://github.com/samba-team/samba.git
synced 2025-03-11 16:58:40 +03:00
s4:dsdb/schema: Remove unused old schema from memory
This avoids confusion when reading the talloc dump from a ldb context that has been the target of replication, as the dsdb_schema_copy_shallow() memory was still around, if unused. BUG: https://bugzilla.samba.org/show_bug.cgi?id=12115 Signed-off-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Stefan Metzmacher <metze@samba.org>
This commit is contained in:
parent
c533b60ceb
commit
29caafaf28
@ -566,6 +566,8 @@ int dsdb_set_global_schema(struct ldb_context *ldb)
|
||||
{
|
||||
int ret;
|
||||
void *use_global_schema = (void *)1;
|
||||
struct dsdb_schema *old_schema = ldb_get_opaque(ldb, "dsdb_schema");
|
||||
|
||||
ret = ldb_set_opaque(ldb, "dsdb_use_global_schema", use_global_schema);
|
||||
if (ret != LDB_SUCCESS) {
|
||||
return ret;
|
||||
@ -575,6 +577,16 @@ int dsdb_set_global_schema(struct ldb_context *ldb)
|
||||
return LDB_SUCCESS;
|
||||
}
|
||||
|
||||
/* Remove any pointer to a previous schema */
|
||||
ret = ldb_set_opaque(ldb, "dsdb_schema", NULL);
|
||||
if (ret != LDB_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Remove the reference to the schema we just overwrote - if there was
|
||||
* none, NULL is harmless here */
|
||||
talloc_unlink(ldb, old_schema);
|
||||
|
||||
/* Set the new attributes based on the new schema */
|
||||
ret = dsdb_schema_set_indices_and_attributes(ldb, global_schema, false /* Don't write indices and attributes, it's expensive */);
|
||||
if (ret == LDB_SUCCESS) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user