s4-schema: use dsdb_schema_info_blob_is_valid() to verify schemaInfo blob
authorKamen Mazdrashki <kamenim@samba.org>
Thu, 16 Sep 2010 23:48:50 +0000 (02:48 +0300)
committerKamen Mazdrashki <kamenim@samba.org>
Fri, 17 Sep 2010 10:53:03 +0000 (13:53 +0300)
instead of parsing it.

source4/dsdb/schema/schema_init.c

index a95e7ec2af3d0130ec0e06c7dc5e39b40e1a83f9..ba12f523e8c1a2134bf606b71886416efadb831c 100644 (file)
@@ -113,20 +113,17 @@ WERROR dsdb_load_oid_mappings_ldb(struct dsdb_schema *schema,
        WERROR werr;
        const char *schema_info;
        struct dsdb_schema_prefixmap *pfm;
-       struct dsdb_schema_info *schi;
        TALLOC_CTX *mem_ctx;
 
+       /* verify schemaInfo blob is valid one */
+       if (!dsdb_schema_info_blob_is_valid(schemaInfo)) {
+               DEBUG(0,(__location__": dsdb_schema_info_blob_is_valid() failed.\n"));
+               return WERR_INVALID_PARAMETER;
+       }
+
        mem_ctx = talloc_new(schema);
        W_ERROR_HAVE_NO_MEMORY(mem_ctx);
 
-       /* parse schemaInfo blob to verify it is valid */
-       werr = dsdb_schema_info_from_blob(schemaInfo, mem_ctx, &schi);
-       if (!W_ERROR_IS_OK(werr)) {
-               DEBUG(0, (__location__ " dsdb_schema_info_from_blob failed: %s\n", win_errstr(werr)));
-               talloc_free(mem_ctx);
-               return werr;
-       }
-
        /* fetch prefixMap */
        werr = _dsdb_prefixmap_from_ldb_val(prefixMap,
                                            mem_ctx, &pfm);