Commit 3791b0de authored by Guido van Rossum's avatar Guido van Rossum

Carefully check for overflow when allocating the memory for fromfile

-- someone tried to pass in sys.maxint and got bitten by the bogus
calculations.
parent 24f8579e
......@@ -935,8 +935,15 @@ array_fromfile(self, args)
char *item = self->ob_item;
int itemsize = self->ob_descr->itemsize;
int nread;
PyMem_RESIZE(item, char, (self->ob_size + n) * itemsize);
int newlength;
size_t newbytes;
/* Be careful here about overflow */
if ((newlength = self->ob_size + n) <= 0 ||
(newbytes = newlength * itemsize) / itemsize != newlength)
goto nomem;
PyMem_RESIZE(item, char, newbytes);
if (item == NULL) {
nomem:
PyErr_NoMemory();
return NULL;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment