r10753: don't require every ldb module to implement both a search_bytree() and
[metze/samba/wip.git] / source4 / lib / ldb / common / ldb.c
index a743b2f5844ba7f63f263a03f1e97a921931d247..29ee323ad4cdd4a7d355b73069cc34c3f78853e6 100644 (file)
@@ -172,13 +172,23 @@ int ldb_search(struct ldb_context *ldb,
               const char *expression,
               const char * const *attrs, struct ldb_message ***res)
 {
-       ldb_reset_err_string(ldb);
+       struct ldb_parse_tree *tree;
+       int ret;
+
+       tree = ldb_parse_tree(ldb, expression);
+       if (tree == NULL) {
+               ldb_set_errstring(ldb->modules, talloc_strdup(ldb, "Unable to parse search expression"));
+               return -1;
+       }
+
+       ret = ldb_search_bytree(ldb, base, scope, tree, attrs, res);
+       talloc_free(tree);
 
-       return ldb->modules->ops->search(ldb->modules, base, scope, expression, attrs, res);
+       return ret;
 }
 
 /*
-  search the database given a LDAP-like search expression
+  search the database given a search tree
 
   return the number of records found, or -1 on error