Mercurial > cpython-lru_cache-weakref
comparison Modules/arraymodule.c @ 10283:d3bece46486e legacy-trunk
Carefully check for overflow when allocating the memory for fromfile
-- someone tried to pass in sys.maxint and got bitten by the bogus
calculations.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Tue, 23 Feb 1999 18:05:22 +0000 |
| parents | 38023a425e48 |
| children | a4768315948d |
comparison
equal
deleted
inserted
replaced
| 10282:01dafc571a30 | 10283:d3bece46486e |
|---|---|
| 933 } | 933 } |
| 934 if (n > 0) { | 934 if (n > 0) { |
| 935 char *item = self->ob_item; | 935 char *item = self->ob_item; |
| 936 int itemsize = self->ob_descr->itemsize; | 936 int itemsize = self->ob_descr->itemsize; |
| 937 int nread; | 937 int nread; |
| 938 PyMem_RESIZE(item, char, (self->ob_size + n) * itemsize); | 938 int newlength; |
| 939 size_t newbytes; | |
| 940 /* Be careful here about overflow */ | |
| 941 if ((newlength = self->ob_size + n) <= 0 || | |
| 942 (newbytes = newlength * itemsize) / itemsize != newlength) | |
| 943 goto nomem; | |
| 944 PyMem_RESIZE(item, char, newbytes); | |
| 939 if (item == NULL) { | 945 if (item == NULL) { |
| 946 nomem: | |
| 940 PyErr_NoMemory(); | 947 PyErr_NoMemory(); |
| 941 return NULL; | 948 return NULL; |
| 942 } | 949 } |
| 943 self->ob_item = item; | 950 self->ob_item = item; |
| 944 self->ob_size += n; | 951 self->ob_size += n; |
