diff options
author | Volker Lendecke <vl@samba.org> | 2013-12-07 12:58:07 +0000 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2013-12-14 10:10:07 +0100 |
commit | a31d08feeb65bd3b4ff175c8096fb23f8d496789 (patch) | |
tree | 2ea22c9de0d5176b63b7f2f450ee2a72c5c64b8b /lib/dbwrap | |
parent | 7ae77a5d265e5ac4d1006528a178c1d777599f39 (diff) | |
download | samba-a31d08feeb65bd3b4ff175c8096fb23f8d496789.tar.gz |
dbwrap_cache: Fix dbwrap_cache_validate
Classic brown paper bag bug :-(
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Diffstat (limited to 'lib/dbwrap')
-rw-r--r-- | lib/dbwrap/dbwrap_cache.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/lib/dbwrap/dbwrap_cache.c b/lib/dbwrap/dbwrap_cache.c index d97242ebdc8..6c6b795a416 100644 --- a/lib/dbwrap/dbwrap_cache.c +++ b/lib/dbwrap/dbwrap_cache.c @@ -32,15 +32,27 @@ struct db_cache_ctx { static bool dbwrap_cache_validate(struct db_cache_ctx *ctx) { - if (ctx->seqnum == dbwrap_get_seqnum(ctx->backing)) { + int backing_seqnum; + + backing_seqnum = dbwrap_get_seqnum(ctx->backing); + if (backing_seqnum == ctx->seqnum) { return true; } + TALLOC_FREE(ctx->positive); ctx->positive = db_open_rbt(ctx); + if (ctx->positive == NULL) { + return false; + } + TALLOC_FREE(ctx->negative); ctx->negative = db_open_rbt(ctx); + if (ctx->negative == NULL) { + return false; + } - return ((ctx->positive != NULL) && (ctx->negative != NULL)); + ctx->seqnum = backing_seqnum; + return true; } static NTSTATUS dbwrap_cache_parse_record( |