diff options
author | Volker Lendecke <vl@samba.org> | 2018-03-04 10:21:09 +0100 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2018-03-22 02:15:14 +0100 |
commit | 2c94093ad961f3e93302dae6aa373e5b3fe8ee95 (patch) | |
tree | f07c58b16ff69779d177aaa5d10fc9e7e3b29db3 | |
parent | df2a036377ad68a999cbccd6e2ba813fa48e7cb9 (diff) | |
download | samba-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.c | 13 |
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), |