From: Howard Chu Date: Mon, 6 Mar 2023 16:47:44 +0000 (+0000) Subject: ITS#8447 fix cursor_put(MDB_CURRENT) on DUPSORT DB with different-sized data X-Git-Tag: LMDB_0.9.31~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=76bad923f787462ecd969c273cc92a67f8633d96;p=thirdparty%2Fopenldap.git ITS#8447 fix cursor_put(MDB_CURRENT) on DUPSORT DB with different-sized data --- diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c index 931517133b..deb6779640 100644 --- a/libraries/liblmdb/mdb.c +++ b/libraries/liblmdb/mdb.c @@ -6963,11 +6963,14 @@ current: else if (!(mc->mc_flags & C_SUB)) memcpy(olddata.mv_data, data->mv_data, data->mv_size); else { + if (key->mv_size != NODEKSZ(leaf)) + goto new_ksize; memcpy(NODEKEY(leaf), key->mv_data, key->mv_size); goto fix_parent; } return MDB_SUCCESS; } +new_ksize: mdb_node_del(mc, 0); }