aboutsummaryrefslogtreecommitdiff
path: root/src/proto.h
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2018-10-18 17:23:07 +0300
committerSergey Poznyakoff <gray@gnu.org>2018-10-18 17:23:07 +0300
commit852ff1b6e81ce13fdcd1fd4fb272b17d760760b3 (patch)
tree3113d09e84353d47dfd48b237c8b5e2c62eed869 /src/proto.h
parent2ff4ae9c745d4b9e6ee36468c81554027f66c35b (diff)
downloadgdbm-852ff1b6e81ce13fdcd1fd4fb272b17d760760b3.tar.gz
gdbm-852ff1b6e81ce13fdcd1fd4fb272b17d760760b3.tar.bz2
Attempt recovery in case of invalid next_block header field
* src/gdbmopen.c (validate_header): Return GDBM_NEED_RECOVERY if next_block is invalid. (_gdbm_validate_header): New function. (gdbm_fd_open): Set need_recovery depending on return from validate_header. (gdbm_open): Bail out on invalid value of GDBM_OPENMASK bits. * src/proto.h (_gdbm_validate_header): New proto. * src/recover.c (check_db): Re-validate the header. * src/gdbmtool.c (export_handler): Fix option processing.
Diffstat (limited to 'src/proto.h')
-rw-r--r--src/proto.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/proto.h b/src/proto.h
index 02f6f9b..e3b6a45 100644
--- a/src/proto.h
+++ b/src/proto.h
@@ -53,6 +53,8 @@ void _gdbm_cache_entry_invalidate (GDBM_FILE, int);
int gdbm_avail_block_validate (GDBM_FILE dbf, avail_block *avblk);
int gdbm_bucket_avail_table_validate (GDBM_FILE dbf, hash_bucket *bucket);
+int _gdbm_validate_header (GDBM_FILE dbf);
+
/* From mmap.c */
int _gdbm_mapped_init (GDBM_FILE);
void _gdbm_mapped_unmap (GDBM_FILE);

Return to:

Send suggestions and report system problems to the System administrator.