s4-dsdb: if we don't have a remote schema, then use the local one
authorAndrew Tridgell <tridge@samba.org>
Fri, 17 Jun 2011 01:30:41 +0000 (11:30 +1000)
committerAndrew Tridgell <tridge@samba.org>
Fri, 17 Jun 2011 02:32:55 +0000 (12:32 +1000)
this allows the use of drsuapi_to_ldb() on all attributes for the
local database

source4/dsdb/schema/schema_syntax.c

index ea582db68bf6ea073be27905f6f7f8b492275fd6..75dc16252b5c41ca512ce9a47fdc5f5552714e0a 100644 (file)
@@ -1069,8 +1069,14 @@ static WERROR _dsdb_syntax_OID_oid_drsuapi_to_ldb(const struct dsdb_syntax_ctx *
                                                  struct ldb_message_element *out)
 {
        unsigned int i;
+       const struct dsdb_schema_prefixmap *prefixmap;
 
-       SMB_ASSERT(ctx->pfm_remote);
+       if (ctx->pfm_remote != NULL) {
+               prefixmap = ctx->pfm_remote;
+       } else {
+               prefixmap = ctx->schema->prefixmap;
+       }
+       SMB_ASSERT(prefixmap);
 
        out->flags      = 0;
        out->name       = talloc_strdup(mem_ctx, attr->lDAPDisplayName);
@@ -1095,7 +1101,7 @@ static WERROR _dsdb_syntax_OID_oid_drsuapi_to_ldb(const struct dsdb_syntax_ctx *
 
                attid = IVAL(in->value_ctr.values[i].blob->data, 0);
 
-               status = dsdb_schema_pfm_oid_from_attid(ctx->pfm_remote, attid,
+               status = dsdb_schema_pfm_oid_from_attid(prefixmap, attid,
                                                        out->values, &oid);
                if (!W_ERROR_IS_OK(status)) {
                        DEBUG(0,(__location__ ": Error: Unknown ATTID 0x%08X\n",