From 81b971beae3c37120eebdf4020d8824dd8a027d1 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Fri, 29 Dec 2006 01:51:45 +0000 Subject: r20398: Revert this patch, which caused failures in the samba3sam.js build farm test. The interaction of the samldb.c module and this function is complex... Andrew Bartlett (This used to be commit bf7ab75875f722cc8499d24d455a94dd83b986ad) --- source4/dsdb/samdb/samdb.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/source4/dsdb/samdb/samdb.c b/source4/dsdb/samdb/samdb.c index e5eafb9188..405f15c83e 100644 --- a/source4/dsdb/samdb/samdb.c +++ b/source4/dsdb/samdb/samdb.c @@ -626,38 +626,32 @@ uint16_t samdb_result_acct_flags(struct ldb_message *msg, const char *attr) /* Find an attribute, with a particular value */ + +/* The current callers of this function expect a very specific + * behaviour: In particular, objectClass subclass equivilance is not + * wanted. This means that we should not lookup the schema for the + * comparison function */ struct ldb_message_element *samdb_find_attribute(struct ldb_context *ldb, const struct ldb_message *msg, const char *name, const char *value) { int i; struct ldb_message_element *el = ldb_msg_find_element(msg, name); - const struct ldb_schema_attribute *a; struct ldb_val v; - TALLOC_CTX *tmp_ctx = talloc_new(ldb); - if (!tmp_ctx) { - return NULL; - } - v.data = discard_const_p(uint8_t, value); v.length = strlen(value); if (!el) { - talloc_free(tmp_ctx); return NULL; } - a = ldb_schema_attribute_by_name(ldb, name); - for (i=0;inum_values;i++) { - if (a->syntax->comparison_fn(ldb, tmp_ctx, &el->values[i], &v) == 0) { - talloc_free(tmp_ctx); + if (strcasecmp(value, (char *)el->values[i].data) == 0) { return el; } } - talloc_free(tmp_ctx); return NULL; } -- cgit