aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2021-09-05 08:40:44 +0300
committerSergey Poznyakoff <gray@gnu.org>2021-09-05 08:40:44 +0300
commit4d5be2bb19bd299a5bd3525c4e28f571929d70de (patch)
tree570778eb77e1a268f1d9f1c21b8d280827a82e0a
parentf7692ba9af9d85ec8c31708ca82632109cf4a95b (diff)
downloadgdbm-4d5be2bb19bd299a5bd3525c4e28f571929d70de.tar.gz
gdbm-4d5be2bb19bd299a5bd3525c4e28f571929d70de.tar.bz2
Fix file header validation
* src/gdbmopen.c (validate_header_std) (validate_header_numsync): Check if bucket_size is > 0.
-rw-r--r--src/gdbmopen.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/gdbmopen.c b/src/gdbmopen.c
index 27896d4..9b812c6 100644
--- a/src/gdbmopen.c
+++ b/src/gdbmopen.c
@@ -109,7 +109,7 @@ validate_header_std (gdbm_file_header const *hdr, struct stat const *st)
if (hdr->dir_bits != dir_bits)
return GDBM_BAD_HEADER;
- if (!(hdr->bucket_size > sizeof (hash_bucket)))
+ if (!(hdr->bucket_size > 0 && hdr->bucket_size > sizeof (hash_bucket)))
return GDBM_BAD_HEADER;
if (hdr->bucket_elems != bucket_element_count (hdr->bucket_size))
@@ -155,7 +155,7 @@ validate_header_numsync (gdbm_file_header const *hdr, struct stat const *st)
if (hdr->dir_bits != dir_bits)
return GDBM_BAD_HEADER;
- if (!(hdr->bucket_size > sizeof (hash_bucket)))
+ if (!(hdr->bucket_size > 0 && hdr->bucket_size > sizeof (hash_bucket)))
return GDBM_BAD_HEADER;
if (hdr->bucket_elems != bucket_element_count (hdr->bucket_size))

Return to:

Send suggestions and report system problems to the System administrator.