File CVE-2019-6446_allow_pickle_False.patch of Package python-numpy.26461

---
 numpy/lib/npyio.py |   27 +++++++++++++++++++--------
 1 file changed, 19 insertions(+), 8 deletions(-)

--- a/numpy/lib/npyio.py
+++ b/numpy/lib/npyio.py
@@ -5,7 +5,6 @@ from . import format
 import sys
 import os
 import re
-import sys
 import itertools
 import warnings
 import weakref
@@ -281,7 +280,7 @@ class NpzFile(object):
         return self.files.__contains__(key)
 
 
-def load(file, mmap_mode=None):
+def load(file, mmap_mode=None, allow_pickle=None):
     """
     Load an array(s) or pickled objects from .npy, .npz, or pickled files.
 
@@ -360,8 +359,16 @@ def load(file, mmap_mode=None):
     memmap([4, 5, 6])
 
     """
-    import gzip
+    if allow_pickle is None:
+        UserWarning("""
+        numpy.load() run without explicit setting allow_pickle option.
+        If you are not completely certain about security of the pickled
+        data, you are strongly encouraged to set allow_pickle to False,
+        otherwise you can set it to True.
+        """)
+        allow_pickle = False
 
+    import gzip
     own_fid = False
     if isinstance(file, basestring):
         fid = open(file, "rb")
@@ -390,12 +397,16 @@ def load(file, mmap_mode=None):
             else:
                 return format.read_array(fid)
         else:
-            # Try a pickle
-            try:
-                return pickle.load(fid)
-            except:
+            if allow_pickle:
+                # Try a pickle
+                try:
+                    return pickle.load(fid)
+                except:
+                    raise IOError(
+                        "Failed to interpret file %s as a pickle" % repr(file))
+            else:
                 raise IOError(
-                    "Failed to interpret file %s as a pickle" % repr(file))
+                    "Loading of pickles not permitted: file %s" % repr(file))
     finally:
         if own_fid:
             fid.close()
openSUSE Build Service is sponsored by