diff options
Diffstat (limited to 'source4/dsdb/samdb')
-rw-r--r-- | source4/dsdb/samdb/ldb_modules/normalise.c | 4 | ||||
-rw-r--r-- | source4/dsdb/samdb/ldb_modules/simple_ldap_map.c | 8 |
2 files changed, 10 insertions, 2 deletions
diff --git a/source4/dsdb/samdb/ldb_modules/normalise.c b/source4/dsdb/samdb/ldb_modules/normalise.c index 695393d4e8a..a0eff43534d 100644 --- a/source4/dsdb/samdb/ldb_modules/normalise.c +++ b/source4/dsdb/samdb/ldb_modules/normalise.c @@ -106,8 +106,8 @@ static int normalise_search_callback(struct ldb_context *ldb, void *context, str continue; } /* Look to see if this attributeSyntax is a DN */ - if ((strcmp(attribute->attributeSyntax_oid, "2.5.5.1") != 0) && - (strcmp(attribute->attributeSyntax_oid, "2.5.5.7") != 0)) { + if (!((strcmp(attribute->attributeSyntax_oid, "2.5.5.1") == 0) || + (strcmp(attribute->attributeSyntax_oid, "2.5.5.7") == 0))) { continue; } for (j = 0; j < ares->message->elements[i].num_values; j++) { diff --git a/source4/dsdb/samdb/ldb_modules/simple_ldap_map.c b/source4/dsdb/samdb/ldb_modules/simple_ldap_map.c index 3f4c19d2852..91896d7247f 100644 --- a/source4/dsdb/samdb/ldb_modules/simple_ldap_map.c +++ b/source4/dsdb/samdb/ldb_modules/simple_ldap_map.c @@ -153,9 +153,17 @@ static struct ldb_val sid_always_binary(struct ldb_module *module, TALLOC_CTX *c /* Ensure we always convert objectCategory into a DN */ static struct ldb_val objectCategory_always_dn(struct ldb_module *module, TALLOC_CTX *ctx, const struct ldb_val *val) { + struct ldb_dn *dn; struct ldb_val out = data_blob(NULL, 0); const struct ldb_schema_attribute *a = ldb_schema_attribute_by_name(module->ldb, "objectCategory"); + dn = ldb_dn_new(ctx, module->ldb, val->data); + if (dn && ldb_dn_is_valid(dn)) { + talloc_free(dn); + return val_copy(module, ctx, val); + } + talloc_free(dn); + if (a->syntax->canonicalise_fn(module->ldb, ctx, val, &out) != LDB_SUCCESS) { return data_blob(NULL, 0); } |