Fix potential segfaults using freed memory.
authorSimo Sorce <idra@samba.org>
Mon, 9 Mar 2009 22:04:38 +0000 (18:04 -0400)
committerSimo Sorce <idra@samba.org>
Tue, 10 Mar 2009 00:12:11 +0000 (20:12 -0400)
commitf088353d37b433af7b979a17871233cccddf7aca
tree35a022bf85b756bb500fda1b195aeb938da29925
parent218ce0e80532b0dbc595e72502d9596a35acdffd
Fix potential segfaults using freed memory.

In some code paths ltdb_context was still referenced even after we were returned
an error by one of the callbacks. Because the interface assumes that once an
error is returned the ldb_request may be freed, and because the ltdb_context was
allocated as a child of the request, this might cause access to freed memory.
Allocate the ltdb_context on ldb, and keep track of what's going on with the
request by adding a spy children on it. This way even if the request is freed
before the ltdb_callback is called, we will safely free the ctx and just quietly
return.
source4/lib/ldb/ldb_tdb/ldb_index.c
source4/lib/ldb/ldb_tdb/ldb_search.c
source4/lib/ldb/ldb_tdb/ldb_tdb.c
source4/lib/ldb/ldb_tdb/ldb_tdb.h