From aeb6b34ea0c89cbd70caffa0d647079fd831c208 Mon Sep 17 00:00:00 2001 From: Niko Date: Sat, 24 Sep 2022 22:38:25 +0300 Subject: [PATCH] fix me_esumsize not taken into account for max free space on page. issue with MAC authenticated encryption --- libraries/liblmdb/mdb.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c index ef98be3..1955fff 100644 --- a/libraries/liblmdb/mdb.c +++ b/libraries/liblmdb/mdb.c @@ -5345,8 +5345,8 @@ mdb_env_open2(MDB_env *env, int prev) } #endif - env->me_maxfree_1pg = (env->me_psize - PAGEHDRSZ) / sizeof(pgno_t) - 1; - env->me_nodemax = (((env->me_psize - PAGEHDRSZ) / MDB_MINKEYS) & -2) + env->me_maxfree_1pg = (env->me_psize - PAGEHDRSZ - env->me_esumsize) / sizeof(pgno_t) - 1; + env->me_nodemax = (((env->me_psize - PAGEHDRSZ - env->me_esumsize) / MDB_MINKEYS) & -2) - sizeof(indx_t); #if !(MDB_MAXKEYSIZE) env->me_maxkey = env->me_nodemax - (NODESIZE + sizeof(MDB_db)); @@ -10432,7 +10432,7 @@ mdb_page_split(MDB_cursor *mc, MDB_val *newkey, MDB_val *newdata, pgno_t newpgno } else { int psize, nsize, k; /* Maximum free space in an empty page */ - pmax = env->me_psize - PAGEHDRSZ; + pmax = env->me_psize - PAGEHDRSZ - env->me_esumsize; if (IS_LEAF(mp)) nsize = mdb_leaf_size(env, newkey, newdata); else