summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2009-12-21 20:59:57 +1100
committerAndrew Tridgell <tridge@samba.org>2010-01-02 08:16:52 +1100
commitd4853fed00a9f5e6e5eee5dc1ce0eab3cd9bda37 (patch)
tree2ace7d4cf6f8cb2d8494361c0f3d28ebbfadd8fc
parentca5c3a0a02b18787c089c4f32807d4cdf59578df (diff)
downloadsamba-d4853fed00a9f5e6e5eee5dc1ce0eab3cd9bda37.tar.gz
samba-d4853fed00a9f5e6e5eee5dc1ce0eab3cd9bda37.tar.bz2
samba-d4853fed00a9f5e6e5eee5dc1ce0eab3cd9bda37.zip
sd-schema: order DRS classes on the wire in reverse order
windows sends objectclasses in DRS in the opposite order to what LDAP uses
-rw-r--r--source4/dsdb/schema/schema_syntax.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/source4/dsdb/schema/schema_syntax.c b/source4/dsdb/schema/schema_syntax.c
index e958605707..0873779811 100644
--- a/source4/dsdb/schema/schema_syntax.c
+++ b/source4/dsdb/schema/schema_syntax.c
@@ -735,7 +735,10 @@ static WERROR _dsdb_syntax_OID_obj_ldb_to_drsuapi(struct ldb_context *ldb,
blobs[i] = data_blob_talloc(blobs, NULL, 4);
W_ERROR_HAVE_NO_MEMORY(blobs[i].data);
- obj_class = dsdb_class_by_lDAPDisplayName(schema, (const char *)in->values[i].data);
+ /* in DRS windows puts the classes in the opposite
+ order to the order used in ldap */
+ obj_class = dsdb_class_by_lDAPDisplayName(schema,
+ (const char *)in->values[(in->num_values-1)-i].data);
if (!obj_class) {
return WERR_FOOBAR;
}