s4/drs: dsdb_verify_oid_mappings_drsuapi() replaced by dsdb_schema_pfm_contains_drsua...
authorKamen Mazdrashki <kamen.mazdrashki@postpath.com>
Mon, 26 Oct 2009 01:06:16 +0000 (03:06 +0200)
committerStefan Metzmacher <metze@samba.org>
Fri, 6 Nov 2009 13:05:42 +0000 (14:05 +0100)
dsdb_schema_pfm_contains_drsuapi_pfm() is part of reimplemented
prefixMap interface.

This name was choosen to clearly show, that this a week verification
in case we want to determine if remote schema is changed.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
source4/dsdb/repl/replicated_objects.c
source4/dsdb/schema/schema_init.c
source4/libnet/libnet_vampire.c
source4/torture/libnet/libnet_BecomeDC.c

index ec5dcd472054964ef561a28b3b82e21e381e5631..47291b68de041f7342a1486b5784a2bbf759640c 100644 (file)
@@ -229,7 +229,7 @@ WERROR dsdb_extended_replicated_objects_commit(struct ldb_context *ldb,
                return WERR_DS_SCHEMA_NOT_LOADED;
        }
 
-       status = dsdb_verify_oid_mappings_drsuapi(schema, mapping_ctr);
+       status = dsdb_schema_pfm_contains_drsuapi_pfm(schema->prefixmap, mapping_ctr);
        W_ERROR_NOT_OK_RETURN(status);
 
        out = talloc_zero(mem_ctx, struct dsdb_extended_replicated_objects);
index e64cc4bb83fc5b5561068543743ce8033590d848..0796200cb0f31a6f66906e53e5321a9726e88045 100644 (file)
@@ -157,77 +157,6 @@ WERROR dsdb_get_oid_mappings_ldb(const struct dsdb_schema *schema,
        return WERR_OK;
 }
 
-WERROR dsdb_verify_oid_mappings_drsuapi(const struct dsdb_schema *schema, const struct drsuapi_DsReplicaOIDMapping_Ctr *ctr)
-{
-       uint32_t i,j;
-       DATA_BLOB oid_blob;
-
-       for (i=0; i < ctr->num_mappings; i++) {
-               if (ctr->mappings[i].oid.binary_oid == NULL) {
-                       return WERR_INVALID_PARAM;
-               }
-
-               if (ctr->mappings[i].oid.binary_oid[0] == 0xFF) {
-                       if (ctr->mappings[i].id_prefix != 0) {
-                               return WERR_INVALID_PARAM;
-                       }
-
-                       /* the magic value should be in the last array member */
-                       if (i != (ctr->num_mappings - 1)) {
-                               return WERR_INVALID_PARAM;
-                       }
-
-                       if (ctr->mappings[i].oid.length != 21) {
-                               return WERR_INVALID_PARAM;
-                       }
-
-                       oid_blob = strhex_to_data_blob(NULL, schema->schema_info);
-                       W_ERROR_HAVE_NO_MEMORY(oid_blob.data);
-
-                       if (memcmp(oid_blob.data, ctr->mappings[i].oid.binary_oid, 21) != 0) {
-                               data_blob_free(&oid_blob);
-                               return WERR_DS_DRA_SCHEMA_MISMATCH;
-                       }
-
-                       data_blob_free(&oid_blob);
-               } else {
-                       /* the last array member should contain the magic value not a oid */
-                       if (i == (ctr->num_mappings - 1)) {
-                               return WERR_INVALID_PARAM;
-                       }
-
-                       for (j=0; j < schema->num_prefixes; j++) {
-                               if (schema->prefixes[j].id != (ctr->mappings[i].id_prefix<<16)) {
-                                       continue;
-                               }
-
-                               if (!ber_write_partial_OID_String(NULL, &oid_blob, schema->prefixes[j].oid)) {
-                                       return WERR_INTERNAL_ERROR;
-                               }
-
-                               if (oid_blob.length != ctr->mappings[j].oid.length) {
-                                       data_blob_free(&oid_blob);
-                                       return WERR_DS_DRA_SCHEMA_MISMATCH;
-                               }
-
-                               if (memcmp(ctr->mappings[i].oid.binary_oid, oid_blob.data, oid_blob.length) != 0) {
-                                       data_blob_free(&oid_blob);
-                                       return WERR_DS_DRA_SCHEMA_MISMATCH;
-                               }
-
-                               data_blob_free(&oid_blob);
-
-                               break;
-                       }
-
-                       if (j == schema->num_prefixes) {
-                               return WERR_DS_DRA_SCHEMA_MISMATCH;                             
-                       }
-               }
-       }
-
-       return WERR_OK;
-}
 
 WERROR dsdb_map_oid2int(const struct dsdb_schema *schema, const char *in, uint32_t *out)
 {
index 2c5aae024e458f96c7430e300fb413b3fba863d0..7120d61eedb4a1a99d2997d8de2a1b288f21661f 100644 (file)
@@ -426,7 +426,7 @@ static NTSTATUS vampire_schema_chunk(void *private_data,
 
                s->schema = s->self_made_schema;
        } else {
-               status = dsdb_verify_oid_mappings_drsuapi(s->schema, mapping_ctr);
+               status = dsdb_schema_pfm_contains_drsuapi_pfm(s->schema->prefixmap, mapping_ctr);
                if (!W_ERROR_IS_OK(status)) {
                        return werror_to_ntstatus(status);
                }
index fbdcd06cbf6c832d8b110766c8e2f6a548911ed5..319dd0aecd1ac8034f6e0c087a4ee2a93dc6da44 100644 (file)
@@ -400,7 +400,7 @@ static NTSTATUS test_become_dc_schema_chunk(void *private_data,
 
                s->schema = s->self_made_schema;
        } else {
-               status = dsdb_verify_oid_mappings_drsuapi(s->schema, mapping_ctr);
+               status = dsdb_schema_pfm_contains_drsuapi_pfm(s->schema->prefixmap, mapping_ctr);
                if (!W_ERROR_IS_OK(status)) {
                        return werror_to_ntstatus(status);
                }