Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
Please login to access the resource
SUSE:SLE-12-SP1:GA
python-numpy
CVE-2017-12852-pad-empty-array-infinite-loop.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File CVE-2017-12852-pad-empty-array-infinite-loop.patch of Package python-numpy
Index: numpy-1.8.0/numpy/lib/arraypad.py =================================================================== --- numpy-1.8.0.orig/numpy/lib/arraypad.py +++ numpy-1.8.0/numpy/lib/arraypad.py @@ -1396,6 +1396,14 @@ def pad(array, pad_width, mode=None, **k elif mode == 'reflect': for axis, (pad_before, pad_after) in enumerate(pad_width): + if narray.shape[axis] == 0: + # Axes with non-zero padding cannot be empty. + if pad_before > 0 or pad_after > 0: + raise ValueError("There aren't any elements to reflect" + " in axis {} of `array`".format(axis)) + # Skip zero padding on empty axes. + continue + # Recursive padding along any axis where `pad_amt` is too large # for indexing tricks. We can only safely pad the original axis # length, to keep the period of the reflections consistent. Index: numpy-1.8.0/numpy/lib/tests/test_arraypad.py =================================================================== --- numpy-1.8.0.orig/numpy/lib/tests/test_arraypad.py +++ numpy-1.8.0/numpy/lib/tests/test_arraypad.py @@ -516,6 +516,12 @@ class ValueError1(TestCase): assert_raises(ValueError, pad, arr, ((-2, 3), (3, 2)), **kwargs) + def test_check_empty_array(self): + assert_raises(ValueError, pad, [], 4, mode='reflect') + assert_raises(ValueError, pad, np.ndarray(0), 4, mode='reflect') + assert_raises(ValueError, pad, np.zeros((0, 3)), ((1,), (0,)), + mode='reflect') + class ValueError2(TestCase): def test_check_simple(self): @@ -534,6 +540,11 @@ class ValueError3(TestCase): assert_raises(ValueError, pad, arr, ((-2, 3), (3, 2)), **kwargs) + def test_check_padding_an_empty_array(self): + a = pad(np.zeros((0, 3)), ((0,), (1,)), mode='reflect') + b = np.zeros((0, 5)) + assert_array_equal(a, b) + if __name__ == "__main__": run_module_suite()
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor