prevent buffer overflow in get_data (closes #26171)
This commit is contained in:
parent
e4309f7f14
commit
64ea192b73
|
@ -36,6 +36,9 @@ Core and Builtins
|
|||
__str__, __trunc__, and __float__ returning instances of subclasses of
|
||||
str, long, and float to subclasses of str, long, and float correspondingly.
|
||||
|
||||
- Issue #26171: Fix possible integer overflow and heap corruption in
|
||||
zipimporter.get_data().
|
||||
|
||||
Library
|
||||
-------
|
||||
|
||||
|
|
|
@ -895,6 +895,11 @@ get_data(char *archive, PyObject *toc_entry)
|
|||
PyMarshal_ReadShortFromFile(fp); /* local header size */
|
||||
file_offset += l; /* Start of file data */
|
||||
|
||||
if (data_size > LONG_MAX - 1) {
|
||||
fclose(fp);
|
||||
PyErr_NoMemory();
|
||||
return NULL;
|
||||
}
|
||||
raw_data = PyString_FromStringAndSize((char *)NULL, compress == 0 ?
|
||||
data_size : data_size + 1);
|
||||
if (raw_data == NULL) {
|
||||
|
|
Loading…
Reference in New Issue