Mercurial > cpython-lru_cache-weakref
diff Objects/bufferobject.c @ 47587:1c964ed35ef9 legacy-trunk
Merge in release25-maint r60793:
Added checks for integer overflows, contributed by Google. Some are
only available if asserts are left in the code, in cases where they
can't be triggered from Python code.
| author | Gregory P. Smith <greg@mad-scientist.com> |
|---|---|
| date | Wed, 11 Jun 2008 07:41:16 +0000 |
| parents | 52294af4b663 |
| children | c4d24fc8ba8a |
line wrap: on
line diff
--- a/Objects/bufferobject.c Wed Jun 11 07:10:43 2008 +0000 +++ b/Objects/bufferobject.c Wed Jun 11 07:41:16 2008 +0000 @@ -207,7 +207,10 @@ "size must be zero or positive"); return NULL; } - /* XXX: check for overflow in multiply */ + if (sizeof(*b) > PY_SSIZE_T_MAX - size) { + /* unlikely */ + return PyErr_NoMemory(); + } /* Inline PyObject_New */ o = (PyObject *)PyObject_MALLOC(sizeof(*b) + size); if ( o == NULL ) @@ -401,6 +404,8 @@ if ( (count = (*pb->bf_getreadbuffer)(other, 0, &ptr2)) < 0 ) return NULL; + assert(count <= PY_SIZE_MAX - size); + ob = PyString_FromStringAndSize(NULL, size + count); if ( ob == NULL ) return NULL;
