ldb:gendb_* calls: support a "NULL" resultset parameter
authorMatthias Dieter Wallnöfer <mdw@samba.org>
Mon, 25 Oct 2010 16:10:04 +0000 (18:10 +0200)
committerMatthias Dieter Wallnöfer <mdw@samba.org>
Mon, 25 Oct 2010 16:58:20 +0000 (18:58 +0200)
This is useful for "samdb_search_count" where only the amount of entries
matters.

lib/util/util_ldb.c
source4/dsdb/common/util.c

index 5a23ce46529a64a8e42179634946664dd41aa6a3..a92824597ade134dcfc195a7d2b93ca472026d9b 100644 (file)
@@ -55,22 +55,23 @@ int gendb_search_v(struct ldb_context *ldb,
                         expr?"%s":NULL, expr);
 
        if (ret == LDB_SUCCESS) {
-               talloc_steal(mem_ctx, res->msgs);
-
                DEBUG(6,("gendb_search_v: %s %s -> %d\n",
                         basedn?ldb_dn_get_linearized(basedn):"NULL",
                         expr?expr:"NULL", res->count));
 
                ret = res->count;
-               *msgs = res->msgs;
+               if (msgs != NULL) {
+                       *msgs = talloc_steal(mem_ctx, res->msgs);
+               }
                talloc_free(res);
        } else if (scope == LDB_SCOPE_BASE && ret == LDB_ERR_NO_SUCH_OBJECT) {
                ret = 0;
-               *msgs = NULL;
+               if (msgs != NULL) *msgs = NULL;
        } else {
                DEBUG(4,("gendb_search_v: search failed: %s\n",
                                        ldb_errstring(ldb)));
                ret = -1;
+               if (msgs != NULL) *msgs = NULL;
        }
 
        talloc_free(expr);
index 9b813d1b52784909eba9d94ca2632ecb10a43efd..340d721c79876477af052797b4c26b90d86fdf0b 100644 (file)
@@ -196,13 +196,12 @@ int samdb_search_count(struct ldb_context *sam_ldb,
                       const char *format, ...) _PRINTF_ATTRIBUTE(3,4)
 {
        va_list ap;
-       struct ldb_message **res;
        const char *attrs[] = { NULL };
        int ret;
        TALLOC_CTX *tmp_ctx = talloc_new(sam_ldb);
 
        va_start(ap, format);
-       ret = gendb_search_v(sam_ldb, tmp_ctx, basedn, &res, attrs, format, ap);
+       ret = gendb_search_v(sam_ldb, tmp_ctx, basedn, NULL, attrs, format, ap);
        va_end(ap);
        talloc_free(tmp_ctx);