Fix (unlikely) integer overflow error in writedata(..)

The range check was applied before padding up, in the unlikely case
sizes (INT_MAX - 2) or (INT_MAX - 1) were passed in,
the value overflow into a negative integer.
This commit is contained in:
Campbell Barton
2023-12-05 16:31:56 +11:00
parent 86f1fd5d8b
commit d48b9d32c6

View File

@@ -704,14 +704,14 @@ static void writedata(WriteData *wd, int filecode, size_t len, const void *adr)
return;
}
/* Align to 4 (writes uninitialized bytes in some cases). */
len = (len + 3) & ~size_t(3);
if (len > INT_MAX) {
BLI_assert_msg(0, "Cannot write chunks bigger than INT_MAX.");
return;
}
/* Align to 4 (writes uninitialized bytes in some cases). */
len = (len + 3) & ~size_t(3);
/* Initialize #BHead. */
bh.code = filecode;
bh.old = adr;