]> 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)
committerHoward Chu <hyc@openldap.org>
Mon, 6 Mar 2023 16:47:44 +0000 (16:47 +0000)
libraries/liblmdb/mdb.c

index e76f09b71ae25ca96589f1f73f1ccb6d172e5c9a..6e4c4d04bf944f99c056c095431fba1ea4e30d0b 100644 (file)
@@ -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);
        }