From 2c94093ad961f3e93302dae6aa373e5b3fe8ee95 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sun, 4 Mar 2018 10:21:09 +0100 Subject: [PATCH] tdb: Handle TDB_NEXT_LOCK_ERR in tdb_traverse_internal Signed-off-by: Volker Lendecke Reviewed-by: Jeremy Allison --- lib/tdb/common/traverse.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/tdb/common/traverse.c b/lib/tdb/common/traverse.c index 9b833795959c..7a1d567cc010 100644 --- a/lib/tdb/common/traverse.c +++ b/lib/tdb/common/traverse.c @@ -166,9 +166,16 @@ static int tdb_traverse_internal(struct tdb_context *tdb, /* tdb_next_lock places locks on the record returned, and its chain */ while ((off = tdb_next_lock(tdb, tl, &rec)) != 0) { - tdb_len_t full_len = rec.key_len + rec.data_len; + tdb_len_t full_len; int nread; + if (off == TDB_NEXT_LOCK_ERR) { + ret = -1; + goto out; + } + + full_len = rec.key_len + rec.data_len; + if (full_len > recbuf_len) { recbuf_len = full_len; @@ -195,10 +202,6 @@ static int tdb_traverse_internal(struct tdb_context *tdb, } } - if (off == TDB_NEXT_LOCK_ERR) { - ret = -1; - goto out; - } count++; /* now read the full record */ nread = tdb->methods->tdb_read(tdb, tl->off + sizeof(rec), -- 2.34.1