s4-drs: ATTIDs for deleted attributes should be based on msDs-IntId value if it exists
authorKamen Mazdrashki <kamenim@samba.org>
Thu, 19 Aug 2010 00:17:36 +0000 (03:17 +0300)
committerKamen Mazdrashki <kamenim@samba.org>
Thu, 19 Aug 2010 00:34:05 +0000 (03:34 +0300)
source4/dsdb/schema/schema_syntax.c
source4/rpc_server/drsuapi/getncchanges.c

index 213871bc5383353b97670611411172d75fdac151..db53aea612a0303659abe1ed1c070430343097de 100644 (file)
@@ -57,8 +57,8 @@ void dsdb_syntax_ctx_init(struct dsdb_syntax_ctx *ctx,
  * Schema NC or msDs-IntId is set for schemaAttribute
  * for the attribute.
  */
-static uint32_t dsdb_attribute_get_attid(const struct dsdb_attribute *attr,
-                                        bool for_schema_nc)
+uint32_t dsdb_attribute_get_attid(const struct dsdb_attribute *attr,
+                                 bool for_schema_nc)
 {
        if (!for_schema_nc && attr->msDS_IntId) {
                return attr->msDS_IntId;
index 6b3f5ddca3c02febc042e34c3023ea589485c9b2..23edf6d4b4a2a006f974292709b52dd3d20e6194 100644 (file)
@@ -269,7 +269,8 @@ static WERROR get_nc_changes_build_object(struct drsuapi_DsReplicaObjectListItem
                        DEBUG(5,("No element '%s' for attributeID %u in message\n",
                                 sa->lDAPDisplayName, attids[i]));
                        ZERO_STRUCT(obj->object.attribute_ctr.attributes[i]);
-                       obj->object.attribute_ctr.attributes[i].attid = attids[i];
+                       obj->object.attribute_ctr.attributes[i].attid =
+                                       dsdb_attribute_get_attid(sa, syntax_ctx.is_schema_nc);
                } else {
                        werr = sa->syntax->ldb_to_drsuapi(&syntax_ctx, sa, el, obj,
                                                          &obj->object.attribute_ctr.attributes[i]);