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;