]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#8447 fix cursor_put(MDB_CURRENT) on DUPSORT DB with different-sized data
authorHoward Chu <hyc@openldap.org>
Mon, 6 Mar 2023 16:47:44 +0000 (16:47 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Thu, 25 May 2023 19:33:44 +0000 (19:33 +0000)
libraries/liblmdb/mdb.c

index 931517133b4d7c227b492dae21f37ec89b5c8f13..deb67796402addae927a641a0d3ae06eca803ab4 100644 (file)
@@ -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);
        }