diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2018-05-30 15:59:49 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2018-05-30 16:03:58 +0300 |
commit | 5ea6f531857cb61946456c2582f7eaa20ceba18b (patch) | |
tree | 757022d0d2ca32388925ab97c417323363e047a6 | |
parent | 156f33c8aa5b5c113987c353bbd32c70f02f6a9d (diff) | |
download | gdbm-5ea6f531857cb61946456c2582f7eaa20ceba18b.tar.gz gdbm-5ea6f531857cb61946456c2582f7eaa20ceba18b.tar.bz2 |
More error checking
* src/bucket.c (_gdbm_get_bucket): Check if bucket_bits value is valid.
* src/gdbmtool.c (_gdbm_print_avail_list): Reverse the sense of the
conditional (fix regression).
-rw-r--r-- | src/bucket.c | 5 | ||||
-rw-r--r-- | src/gdbmtool.c | 2 |
2 files changed, 5 insertions, 2 deletions
diff --git a/src/bucket.c b/src/bucket.c index e17019c..a3e8f4e 100644 --- a/src/bucket.c +++ b/src/bucket.c @@ -143,7 +143,10 @@ _gdbm_get_bucket (GDBM_FILE dbf, int dir_index) } /* Validate the bucket */ bucket = dbf->bucket_cache[lru].ca_bucket; - if (!(bucket->count >= 0 && bucket->count <= dbf->header->bucket_elems)) + if (!(bucket->count >= 0 + && bucket->count <= dbf->header->bucket_elems + && bucket->bucket_bits >= 0 + && bucket->bucket_bits <= GDBM_HASH_BITS)) { GDBM_SET_ERRNO (dbf, GDBM_BAD_BUCKET, TRUE); return -1; diff --git a/src/gdbmtool.c b/src/gdbmtool.c index dbb7510..6d56578 100644 --- a/src/gdbmtool.c +++ b/src/gdbmtool.c @@ -300,7 +300,7 @@ _gdbm_print_avail_list (FILE *fp, GDBM_FILE dbf) /* Print the block! */ fprintf (fp, _("\nblock = %d\nsize = %d\ncount = %d\n"), temp, av_stk->size, av_stk->count); - if (gdbm_avail_block_validate (dbf, av_stk)) + if (gdbm_avail_block_validate (dbf, av_stk) == 0) av_table_display (av_stk->av_table, av_stk->count, fp); else terror (_("invalid avail_block")); |