summaryrefslogtreecommitdiff
path: root/source4/lib/gendb.c
diff options
context:
space:
mode:
Diffstat (limited to 'source4/lib/gendb.c')
-rw-r--r--source4/lib/gendb.c31
1 files changed, 29 insertions, 2 deletions
diff --git a/source4/lib/gendb.c b/source4/lib/gendb.c
index 5b4f7b251e..dc5b7f39aa 100644
--- a/source4/lib/gendb.c
+++ b/source4/lib/gendb.c
@@ -61,7 +61,7 @@ int gendb_search_v(struct ldb_context *ldb,
/*
search the LDB for the specified attributes - varargs variant
*/
-int gendb_search(struct ldb_context *sam_ldb,
+int gendb_search(struct ldb_context *ldb,
TALLOC_CTX *mem_ctx,
const char *basedn,
struct ldb_message ***res,
@@ -72,12 +72,39 @@ int gendb_search(struct ldb_context *sam_ldb,
int count;
va_start(ap, format);
- count = gendb_search_v(sam_ldb, mem_ctx, basedn, res, attrs, format, ap);
+ count = gendb_search_v(ldb, mem_ctx, basedn, res, attrs, format, ap);
va_end(ap);
return count;
}
+int gendb_search_dn(struct ldb_context *ldb,
+ TALLOC_CTX *mem_ctx,
+ const char *dn,
+ struct ldb_message ***res,
+ const char * const *attrs)
+{
+ va_list ap;
+ int count;
+
+ *res = NULL;
+
+ count = ldb_search(ldb, dn, LDB_SCOPE_BASE, "", attrs, res);
+
+ if (count > 1) {
+ DEBUG(1, ("DB Corruption ? - Found more then one entry for dn: %s", dn));
+ return -1;
+ }
+
+ if (*res) talloc_steal(mem_ctx, *res);
+
+ DEBUG(4,("gendb_search_dn: %s -> %d (%s)\n",
+ dn, count, count==-1?ldb_errstring(ldb):"OK"));
+
+ return count;
+}
+
+
/*
setup some initial ldif in a ldb
*/