summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2018-03-04 10:21:09 +0100
committerJeremy Allison <jra@samba.org>2018-03-22 02:15:14 +0100
commit2c94093ad961f3e93302dae6aa373e5b3fe8ee95 (patch)
treef07c58b16ff69779d177aaa5d10fc9e7e3b29db3
parentdf2a036377ad68a999cbccd6e2ba813fa48e7cb9 (diff)
downloadsamba-2c94093ad961f3e93302dae6aa373e5b3fe8ee95.tar.gz
tdb: Handle TDB_NEXT_LOCK_ERR in tdb_traverse_internal
Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
-rw-r--r--lib/tdb/common/traverse.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/lib/tdb/common/traverse.c b/lib/tdb/common/traverse.c
index 9b833795959..7a1d567cc01 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),