mirror of
https://github.com/isar/libmdbx.git
synced 2025-02-08 14:30:51 +08:00
mdbx: ignore meta-pages with wrong pagesize.
This commit is contained in:
parent
0e49b1b2b4
commit
c02a3ac687
14
src/mdbx.c
14
src/mdbx.c
@ -3319,10 +3319,22 @@ static int __cold mdbx_read_header(MDBX_env *env, MDBX_meta *meta) {
|
||||
return MDBX_VERSION_MISMATCH;
|
||||
}
|
||||
|
||||
/* LY: check pagesize */
|
||||
if (!is_power2(page.mp_meta.mm_psize) ||
|
||||
page.mp_meta.mm_psize < MIN_PAGESIZE ||
|
||||
page.mp_meta.mm_psize > MAX_PAGESIZE) {
|
||||
mdbx_debug("meta[%u] has invalid pagesize %u", meta_number,
|
||||
page.mp_meta.mm_psize);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* LY: check signature as a checksum */
|
||||
if (META_IS_STEADY(&page.mp_meta) &&
|
||||
page.mp_meta.mm_datasync_sign != mdbx_meta_sign(&page.mp_meta)) {
|
||||
mdbx_debug("steady-meta[%u] has invalid checksum", meta_number);
|
||||
mdbx_debug("meta[%u] has invalid steady-checksum (0x%" PRIx64
|
||||
" != 0x%" PRIx64 ")",
|
||||
meta_number, page.mp_meta.mm_datasync_sign,
|
||||
mdbx_meta_sign(&page.mp_meta));
|
||||
continue;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user