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-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c7b3cc4df6dfe8f0772fb509bdc74777667caa43;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 e76f09b71a..6e4c4d04bf 100644 --- a/libraries/liblmdb/mdb.c +++ b/libraries/liblmdb/mdb.c @@ -7974,11 +7974,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); }