summaryrefslogtreecommitdiff
path: root/lib/dbwrap
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2013-12-07 12:58:07 +0000
committerStefan Metzmacher <metze@samba.org>2013-12-14 10:10:07 +0100
commita31d08feeb65bd3b4ff175c8096fb23f8d496789 (patch)
tree2ea22c9de0d5176b63b7f2f450ee2a72c5c64b8b /lib/dbwrap
parent7ae77a5d265e5ac4d1006528a178c1d777599f39 (diff)
downloadsamba-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.c16
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(