diff options
-rw-r--r-- | source4/lib/ldb/common/ldb_match.c | 6 | ||||
-rw-r--r-- | source4/lib/ldb/common/ldb_utf8.c | 12 | ||||
-rw-r--r-- | source4/lib/ldb/include/ldb.h | 3 | ||||
-rw-r--r-- | source4/lib/ldb/ldb_tdb/ldb_index.c | 3 |
4 files changed, 17 insertions, 7 deletions
diff --git a/source4/lib/ldb/common/ldb_match.c b/source4/lib/ldb/common/ldb_match.c index 7573cfc808..84f051f497 100644 --- a/source4/lib/ldb/common/ldb_match.c +++ b/source4/lib/ldb/common/ldb_match.c @@ -87,8 +87,7 @@ static int ldb_match_present(struct ldb_context *ldb, struct ldb_parse_tree *tree, enum ldb_scope scope) { - - if (ldb_attr_cmp(tree->u.present.attr, "distinguishedName") == 0) { + if (ldb_attr_dn(tree->u.present.attr) == 0) { return 1; } @@ -151,8 +150,7 @@ static int ldb_match_equality(struct ldb_context *ldb, struct ldb_dn *valuedn; int ret; - if (ldb_attr_cmp(tree->u.equality.attr, "dn") == 0 || - ldb_attr_cmp(tree->u.equality.attr, "distinguishedName") == 0) { + if (ldb_attr_dn(tree->u.equality.attr) == 0) { valuedn = ldb_dn_explode_casefold(ldb, (char *)tree->u.equality.value.data); if (valuedn == NULL) { diff --git a/source4/lib/ldb/common/ldb_utf8.c b/source4/lib/ldb/common/ldb_utf8.c index 61334bce09..a0aad12658 100644 --- a/source4/lib/ldb/common/ldb_utf8.c +++ b/source4/lib/ldb/common/ldb_utf8.c @@ -80,3 +80,15 @@ int ldb_attr_cmp(const char *attr1, const char *attr2) { return ldb_caseless_cmp(attr1, attr2); } + +/* + we accept either 'dn' or 'distinguishedName' for a distinguishedName +*/ +int ldb_attr_dn(const char *attr) +{ + if (ldb_attr_cmp(attr, "dn") == 0 || + ldb_attr_cmp(attr, "distinguishedName") == 0) { + return 0; + } + return -1; +} diff --git a/source4/lib/ldb/include/ldb.h b/source4/lib/ldb/include/ldb.h index c26229678e..c4f877cf5f 100644 --- a/source4/lib/ldb/include/ldb.h +++ b/source4/lib/ldb/include/ldb.h @@ -391,7 +391,8 @@ struct ldb_dn_component *ldb_dn_get_rdn(void *mem_ctx, const struct ldb_dn *dn); /* useful functions for ldb_message structure manipulation */ int ldb_dn_cmp(struct ldb_context *ldb, const char *dn1, const char *dn2); -int ldb_attr_cmp(const char *dn1, const char *dn2); +int ldb_attr_cmp(const char *attr1, const char *attr2); +int ldb_attr_dn(const char *attr); char *ldb_dn_escape_value(void *mem_ctx, struct ldb_val value); /* create an empty message */ diff --git a/source4/lib/ldb/ldb_tdb/ldb_index.c b/source4/lib/ldb/ldb_tdb/ldb_index.c index 093b0dab1d..de9665cb4d 100644 --- a/source4/lib/ldb/ldb_tdb/ldb_index.c +++ b/source4/lib/ldb/ldb_tdb/ldb_index.c @@ -321,8 +321,7 @@ static int ltdb_index_dn_leaf(struct ldb_module *module, if (ldb_attr_cmp(tree->u.equality.attr, LTDB_OBJECTCLASS) == 0) { return ltdb_index_dn_objectclass(module, tree, index_list, list); } - if (ldb_attr_cmp(tree->u.equality.attr, "distinguishedName") == 0 || - ldb_attr_cmp(tree->u.equality.attr, "dn") == 0) { + if (ldb_attr_dn(tree->u.equality.attr) == 0) { list->dn = talloc_array(list, char *, 1); if (list->dn == NULL) { ldb_oom(module->ldb); |