]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
prevent buffer overflow in get_data (closes #26171)
authorBenjamin Peterson <benjamin@python.org>
Thu, 21 Jan 2016 06:23:44 +0000 (22:23 -0800)
committerBenjamin Peterson <benjamin@python.org>
Thu, 21 Jan 2016 06:23:44 +0000 (22:23 -0800)
Misc/NEWS
Modules/zipimport.c

index 0d176456e6d4ef28c69a870e571af6d9d048d50d..995ad1be6a50abef950fb9c78a261de2dec68ab5 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -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
 -------
 
index 27a082dcbadf69959aef68caad77db62edfdafcb..006be3c59a85b08ef6b5aceedbc4ec854b92f4f0 100644 (file)
@@ -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) {