s4/dsdb: schemaInfo revision may be 0
authorKamen Mazdrashki <kamenim@samba.org>
Fri, 23 Apr 2010 13:35:21 +0000 (16:35 +0300)
committerKamen Mazdrashki <kamenim@samba.org>
Thu, 29 Apr 2010 01:54:07 +0000 (04:54 +0300)
In case schemaInfo value is still not set, WinAD supplies
schemaInfo blob with revision = 0 and GUID_ZERO

source4/dsdb/schema/schema_info_attr.c
source4/torture/drs/unit/schemainfo_tests.c

index ac5bdc2fa91906410677a1f060db0559553823c2..ac22eb9b3f2905608662b53033e7d2b9f0cdd1e8 100644 (file)
@@ -135,10 +135,6 @@ WERROR dsdb_blob_from_schema_info(const struct dsdb_schema_info *schema_info,
        enum ndr_err_code ndr_err;
        struct schemaInfoBlob schema_info_blob;
 
-       if (schema_info->revision < 1) {
-               return WERR_INVALID_PARAMETER;
-       }
-
        schema_info_blob.marker         = 0xFF;
        schema_info_blob.revision       = schema_info->revision;
        schema_info_blob.invocation_id  = schema_info->invocation_id;
@@ -209,7 +205,7 @@ WERROR dsdb_module_schema_info_blob_read(struct ldb_module *ldb_module,
 }
 
 /**
- * Pepares ldb_msg to be used for updating schemaInfo value in DB
+ * Prepares ldb_msg to be used for updating schemaInfo value in DB
  */
 static WERROR _dsdb_schema_info_write_prepare(struct ldb_context *ldb,
                                              DATA_BLOB *schema_info_blob,
index 55d782f86c8c94f249138e544690b0bd79b0024a..d093fa56f0515c005f28c7ee539f4772b34c4562 100644 (file)
 
 /**
  * schemaInfo to init ldb context with
- *   Rev:  01
- *   GUID: 071c82fd-45c7-4351-a3db-51f75a630a7f
+ *   Rev:  0
+ *   GUID: 00000000-0000-0000-0000-000000000000
  */
-#define SCHEMA_INFO_INIT_STR           "FF0000000100000000000000000000000000000000"
+#define SCHEMA_INFO_INIT_STR           "FF0000000000000000000000000000000000000000"
 
 /**
  * Default schema_info string to be used for testing
@@ -65,6 +65,13 @@ static const struct {
        WERROR          werr_expected;
        bool            test_both_ways;
 } _schemainfo_test_data[] = {
+       {
+               .schema_info_str = "FF0000000000000000000000000000000000000000",
+               .revision = 0,
+               .guid_str = "00000000-0000-0000-0000-000000000000",
+               .werr_expected = WERR_OK,
+               .test_both_ways = true
+       },
        {
                .schema_info_str = "FF00000001FD821C07C7455143A3DB51F75A630A7F",
                .revision = 1,
@@ -79,18 +86,6 @@ static const struct {
                .werr_expected = WERR_OK,
                .test_both_ways = true
        },
-#if 0
-       /* removed until kamen can take a look - revision 0 is sent by
-        * w2k8r2, and we need to accept it, possibly only when the
-        * other fields are zero */
-       { /* revision > 0 */
-               .schema_info_str = "FF00000000FD821C07C7455143A3DB51F75A630A7F",
-               .revision = 0,
-               .guid_str = "071c82fd-45c7-4351-a3db-51f75a630a7f",
-               .werr_expected = WERR_INVALID_PARAMETER,
-               .test_both_ways = true
-       },
-#endif
        { /* len == 21 */
                .schema_info_str = "FF00000001FD821C07C7455143A3DB51F75A630A7F00",
                .revision = 1,
@@ -333,10 +328,6 @@ static bool test_dsdb_module_schema_info_update(struct torture_context *tctx,
        werr = dsdb_schema_info_from_blob(&blob, priv, &schema_info);
        torture_assert_werr_ok(tctx, werr, "dsdb_schema_info_from_blob() failed");
 
-       /* decrement revision to be able to compare
-        * against default schemaInfo later */
-       schema_info->revision--;
-
        /* check against default schema_info */
        torture_assert_schema_info_equal(tctx, schema_info, priv->schema_info,
                                          "schemaInfo attribute no updated correctly");