diff options
author | Volker Lendecke <vl@samba.org> | 2018-03-04 11:26:37 +0100 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2018-03-22 02:15:14 +0100 |
commit | 6f45cbf42738d869e310027c05e0a5bba07de9fc (patch) | |
tree | 54af6f1ca922f4341ccbef47866c1d6f9306bf0f | |
parent | 5f24fd6863f1278f1e5ea27829c5402c0cae4366 (diff) | |
download | samba-6f45cbf42738d869e310027c05e0a5bba07de9fc.tar.gz |
tdb: Harden allocating the tdb recovery area
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
-rw-r--r-- | lib/tdb/common/transaction.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/tdb/common/transaction.c b/lib/tdb/common/transaction.c index 7d281fc75ff..6a5338c5faf 100644 --- a/lib/tdb/common/transaction.c +++ b/lib/tdb/common/transaction.c @@ -689,6 +689,8 @@ int tdb_recovery_area(struct tdb_context *tdb, tdb_off_t *recovery_offset, struct tdb_record *rec) { + int ret; + if (tdb_ofs_read(tdb, TDB_RECOVERY_HEAD, recovery_offset) == -1) { return -1; } @@ -709,6 +711,13 @@ int tdb_recovery_area(struct tdb_context *tdb, *recovery_offset = 0; rec->rec_len = 0; } + + ret = methods->tdb_oob(tdb, *recovery_offset, rec->rec_len, 1); + if (ret == -1) { + *recovery_offset = 0; + rec->rec_len = 0; + } + return 0; } |