summaryrefslogtreecommitdiffabout
authorSergey Poznyakoff <gray@gnu.org>2018-08-19 06:50:22 (GMT)
committer Sergey Poznyakoff <gray@gnu.org>2018-08-19 06:56:14 (GMT)
commit64ef7e827406f91d31bffdcad9f4b8aaad1f874c (patch) (unidiff)
tree8eb3da77ef771507f07b68172e7af8cd3d8bd36c
parent4e23fa7b90b56408d480ba8c7556b190757ea2c7 (diff)
downloadgdbm-64ef7e827406f91d31bffdcad9f4b8aaad1f874c.tar.gz
gdbm-64ef7e827406f91d31bffdcad9f4b8aaad1f874c.tar.bz2
Fix directory entry validation.
Bug reported by Miroslav Lichvar and Marek Skalick√Ĺ * src/bucket.c (gdbm_dir_entry_valid_p): Fix lower limit for the allowed bucket address. Initial allocation of second block for the directory can be eventually returned to the available list when the directory is expanded during bucket splitting.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--src/bucket.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/bucket.c b/src/bucket.c
index 0597965..3d267e2 100644
--- a/src/bucket.c
+++ b/src/bucket.c
@@ -51,13 +51,13 @@ _gdbm_new_bucket (GDBM_FILE dbf, hash_bucket *bucket, int bits)
51 attempt to read a block at that offset. */ 51 attempt to read a block at that offset. */
52int 52int
53gdbm_dir_entry_valid_p (GDBM_FILE dbf, int dir_index) 53gdbm_dir_entry_valid_p (GDBM_FILE dbf, int dir_index)
54{ 54{
55 return dir_index >= 0 55 return dir_index >= 0
56 && dir_index < GDBM_DIR_COUNT (dbf) 56 && dir_index < GDBM_DIR_COUNT (dbf)
57 && dbf->dir[dir_index] >= 2*dbf->header->block_size; 57 && dbf->dir[dir_index] >= dbf->header->block_size;
58} 58}
59 59
60/* Find a bucket for DBF that is pointed to by the bucket directory from 60/* Find a bucket for DBF that is pointed to by the bucket directory from
61 location DIR_INDEX. The bucket cache is first checked to see if it 61 location DIR_INDEX. The bucket cache is first checked to see if it
62 is already in memory. If not, a bucket may be tossed to read the new 62 is already in memory. If not, a bucket may be tossed to read the new
63 bucket. On success, the requested bucket becomes the "current" bucket 63 bucket. On success, the requested bucket becomes the "current" bucket

Return to:

Send suggestions and report system problems to the System administrator.