s4:dsdb Simplfy match of objectclass in dsdb_schema_set_el_from_ldb_msg
authorAndrew Bartlett <abartlet@samba.org>
Thu, 10 Jun 2010 11:29:57 +0000 (21:29 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Sat, 12 Jun 2010 01:18:41 +0000 (11:18 +1000)
There is no need to do a full ldb_match_msg() for a simple case
insensitive string.

Andrew Bartlett

source4/dsdb/schema/schema_set.c

index c57f5f10ddcbd302000ea634f68e1e1e80e97b67..5ecbad214fb39e49c635c54e3d5cdf0e6efe3a61 100644 (file)
@@ -549,24 +549,11 @@ int dsdb_schema_fill_extended_dn(struct ldb_context *ldb, struct dsdb_schema *sc
 WERROR dsdb_schema_set_el_from_ldb_msg(struct ldb_context *ldb, struct dsdb_schema *schema, 
                                       struct ldb_message *msg) 
 {
-       static struct ldb_parse_tree *attr_tree, *class_tree;
-       if (!attr_tree) {
-               attr_tree = ldb_parse_tree(talloc_autofree_context(), "(objectClass=attributeSchema)");
-               if (!attr_tree) {
-                       return WERR_NOMEM;
-               }
-       }
-
-       if (!class_tree) {
-               class_tree = ldb_parse_tree(talloc_autofree_context(), "(objectClass=classSchema)");
-               if (!class_tree) {
-                       return WERR_NOMEM;
-               }
-       }
-
-       if (ldb_match_msg(ldb, msg, attr_tree, NULL, LDB_SCOPE_BASE)) {
+       if (samdb_find_attribute(ldb, msg,
+                                "objectclass", "attributeSchema") != NULL) {
                return dsdb_attribute_from_ldb(ldb, schema, msg);
-       } else if (ldb_match_msg(ldb, msg, class_tree, NULL, LDB_SCOPE_BASE)) {
+       } else if (samdb_find_attribute(ldb, msg,
+                                "objectclass", "classSchema") != NULL) {
                return dsdb_class_from_ldb(schema, msg);
        }