s4:ldb Fix segfault in ldbsearch store_referral callback
authorAndrew Bartlett <abartlet@samba.org>
Thu, 25 Feb 2010 00:46:41 +0000 (11:46 +1100)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 25 Feb 2010 01:56:19 +0000 (12:56 +1100)
sctx->refs_store was not initialised, and that made talloc_realloc
grumpy once we started actually returning referrals regularly from
Samba4's partitions module (0be57c747825737fa9d64411223e693b055b5f8f
by mdw).

We now just use talloc_zero() and forget about this manual
initialisation work.  Tracking down use of uninitialised variables
with valgrind was the grand idea when this started, but in practice we
just get segfaults in unusual places.

Andrew Bartlett

source4/lib/ldb/tools/ldbsearch.c

index 207b3441955c3232fd61bd11eca88c4ecab61d38..af0c12a84c9d3e6ba69a1d2762228336a469814b 100644 (file)
@@ -191,21 +191,16 @@ static int do_search(struct ldb_context *ldb,
 
        req = NULL;
        
-       sctx = talloc(ldb, struct search_context);
+       sctx = talloc_zero(ldb, struct search_context);
        if (!sctx) return -1;
 
        sctx->ldb = ldb;
        sctx->sort = options->sorted;
-       sctx->num_stored = 0;
-       sctx->refs_stored = 0;
-       sctx->store = NULL;
        sctx->req_ctrls = ldb_parse_control_strings(ldb, sctx, (const char **)options->controls);
        if (options->controls != NULL &&  sctx->req_ctrls== NULL) {
                printf("parsing controls failed: %s\n", ldb_errstring(ldb));
                return -1;
        }
-       sctx->entries = 0;
-       sctx->refs = 0;
 
        if (basedn == NULL) {
                basedn = ldb_get_default_basedn(ldb);