ITS#8335 LMDB: reject MDB_MULTIPLE put with 0 items

Also check for overflow of count and size.
This commit is contained in:
Howard Chu 2026-04-27 18:37:15 +01:00
parent b048b7eb4b
commit 6888aa477b

View file

@ -7707,10 +7707,19 @@ _mdb_cursor_put(MDB_cursor *mc, MDB_val *key, MDB_val *data,
* early failures.
*/
if (flags & MDB_MULTIPLE) {
size_t tmp;
if (!data[1].mv_size)
return EINVAL;
dcount = data[1].mv_size;
data[1].mv_size = 0;
if (!F_ISSET(mc->mc_db->md_flags, MDB_DUPFIXED))
return MDB_INCOMPATIBLE;
/* check for overflow */
tmp = data[0].mv_size * dcount;
if (tmp/dcount != data[0].mv_size)
return MDB_BAD_VALSIZE;
}
nospill = flags & MDB_NOSPILL;