
# HG changeset patch
# User Benjamin Peterson <benjamin@python.org>
# Date 1453357506 28800
# Node ID 10dad6da1b28ea4af78ad9529e469fdbf4ebbc8f
# Parent  a3ac2cd93db9d5336dfd7b5b27efde2c568d8794# Parent  01ddd608b85c85952537d95a43bbabf4fb655057
merge 3.4 (#26171)

Upstream-Status: Backport
CVE: CVE-2016-5636

https://hg.python.org/cpython/raw-rev/10dad6da1b28
Signed-off-by: Armin Kuster <akuster@mvista.com>

Index: Python-3.5.1/Misc/NEWS
===================================================================
--- Python-3.5.1.orig/Misc/NEWS
+++ Python-3.5.1/Misc/NEWS
@@ -91,6 +91,9 @@ Core and Builtins
   Python.h header to fix a compilation error with OpenMP. PyThreadState_GET()
   becomes an alias to PyThreadState_Get() to avoid ABI incompatibilies.
 
+- Issue #26171: Fix possible integer overflow and heap corruption in
+  zipimporter.get_data().
+
 Library
 -------
 
Index: Python-3.5.1/Modules/zipimport.c
===================================================================
--- Python-3.5.1.orig/Modules/zipimport.c
+++ Python-3.5.1/Modules/zipimport.c
@@ -1112,6 +1112,11 @@ get_data(PyObject *archive, PyObject *to
     }
     file_offset += l;           /* Start of file data */
 
+    if (data_size > LONG_MAX - 1) {
+        fclose(fp);
+        PyErr_NoMemory();
+        return NULL;
+    }
     bytes_size = compress == 0 ? data_size : data_size + 1;
     if (bytes_size == 0)
         bytes_size++;
