mirror of
https://git.openldap.org/openldap/openldap.git
synced 2026-06-13 02:30:08 -04:00
ITS#8335 LMDB: reject MDB_MULTIPLE put with 0 items
Also check for overflow of count and size.
This commit is contained in:
parent
b048b7eb4b
commit
6888aa477b
1 changed files with 9 additions and 0 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in a new issue