mirror of
https://github.com/isar/libmdbx.git
synced 2025-02-08 16: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;
|
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 */
|
/* LY: check signature as a checksum */
|
||||||
if (META_IS_STEADY(&page.mp_meta) &&
|
if (META_IS_STEADY(&page.mp_meta) &&
|
||||||
page.mp_meta.mm_datasync_sign != mdbx_meta_sign(&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;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user