From 804cf59a489dd41a83fda56acfec4e9f561b1245 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 28 Oct 2005 07:05:32 +0000 Subject: [PATCH] r11364: added a ldb_attr_dn() function for testing if an attribute name is "dn" or "distinguishedName". This makes us a bit more consistent (This used to be commit b41b374b55f9a056c47ffa2ff88aa5272dbc42fc) --- source4/lib/ldb/common/ldb_match.c | 6 ++---- source4/lib/ldb/common/ldb_utf8.c | 12 ++++++++++++ source4/lib/ldb/include/ldb.h | 3 ++- 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 7573cfc808d..84f051f4976 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 61334bce094..a0aad126586 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 c26229678eb..c4f877cf5f3 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 093b0dab1dc..de9665cb4d6 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);