- update to 2.7.14

* dozens of bugfixes, see NEWS for details
  * fixed possible integer overflow in PyString_DecodeEscape (CVE-2017-1000158, bsc#1068664)
  * fixed segfaults with dict mutated during search
  * fixed possible free-after-use problems with buffer objects with custom indexing
  * fixed urllib.splithost to correctly parse fragments (bpo-30500)
- drop upstreamed python-2.7.13-overflow_check.patch
- drop unneeded python-2.7.12-makeopcode.patch
- drop upstreamed 0001-2.7-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-3094.patch

- update to 2.7.14
  * dozens of bugfixes, see NEWS for details
  * fixed possible integer overflow in PyString_DecodeEscape (CVE-2017-1000158, bsc#1068664)
  * fixed segfaults with dict mutated during search
  * fixed possible free-after-use problems with buffer objects with custom indexing
  * fixed urllib.splithost to correctly parse fragments (bpo-30500)
- drop upstreamed python-2.7.13-overflow_check.patch
- drop unneeded python-2.7.12-makeopcode.patch
- drop upstreamed 0001-2.7-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-3094.patch

- update to 2.7.14
  * dozens of bugfixes, see NEWS for details
  * fixed possible integer overflow in PyString_DecodeEscape (CVE-2017-1000158, bsc#1068664)
  * fixed segfaults with dict mutated during search
  * fixed possible free-after-use problems with buffer objects with custom indexing
  * fixed urllib.splithost to correctly parse fragments (bpo-30500)
- drop upstreamed python-2.7.13-overflow_check.patch
- drop unneeded python-2.7.12-makeopcode.patch
- drop upstreamed 0001-2.7-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-3094.patch

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python?expand=0&rev=213
This commit is contained in:
Jan Matejek 2017-11-21 18:28:14 +00:00 committed by Git OBS Bridge
parent 1482566264
commit 70d78d4e2f
21 changed files with 167 additions and 514 deletions

View File

@ -1,60 +0,0 @@
From 05b7d9c6675b71d17f5fcf379b3888fba431f14e Mon Sep 17 00:00:00 2001
From: Christian Heimes <christian@python.org>
Date: Tue, 15 Aug 2017 10:55:03 +0200
Subject: [PATCH] [2.7] bpo-30714: ALPN changes for OpenSSL 1.1.0f (#3094)
OpenSSL 1.1.0 to 1.1.0e aborted the handshake when server and client
could not agree on a protocol using ALPN. OpenSSL 1.1.0f changed that.
The most recent version now behaves like OpenSSL 1.0.2 again. The ALPN
callback can pretend to not been set.
See https://github.com/openssl/openssl/pull/3158 for more details
Signed-off-by: Christian Heimes <christian@python.org>
(cherry picked from commit a5c1bab352671e043645163ca50c5211aa657acd)
---
Doc/library/ssl.rst | 5 +++--
Lib/test/test_ssl.py | 5 +++--
Misc/NEWS.d/next/Tests/2017-07-25-15-27-44.bpo-30715.Sp7bTF.rst | 2 ++
3 files changed, 8 insertions(+), 4 deletions(-)
create mode 100644 Misc/NEWS.d/next/Tests/2017-07-25-15-27-44.bpo-30715.Sp7bTF.rst
Index: Python-2.7.13/Doc/library/ssl.rst
===================================================================
--- Python-2.7.13.orig/Doc/library/ssl.rst 2016-12-17 21:05:05.000000000 +0100
+++ Python-2.7.13/Doc/library/ssl.rst 2017-09-14 16:14:26.733996348 +0200
@@ -1158,8 +1158,9 @@ to speed up repeated connections from th
This method will raise :exc:`NotImplementedError` if :data:`HAS_ALPN` is
False.
- OpenSSL 1.1.0+ will abort the handshake and raise :exc:`SSLError` when
- both sides support ALPN but cannot agree on a protocol.
+ OpenSSL 1.1.0 to 1.1.0e will abort the handshake and raise :exc:`SSLError`
+ when both sides support ALPN but cannot agree on a protocol. 1.1.0f+
+ behaves like 1.0.2, :meth:`SSLSocket.selected_alpn_protocol` returns None.
.. versionadded:: 2.7.10
Index: Python-2.7.13/Lib/test/test_ssl.py
===================================================================
--- Python-2.7.13.orig/Lib/test/test_ssl.py 2016-12-17 21:05:06.000000000 +0100
+++ Python-2.7.13/Lib/test/test_ssl.py 2017-09-14 16:14:26.733996348 +0200
@@ -2963,8 +2963,9 @@ else:
except ssl.SSLError as e:
stats = e
- if expected is None and IS_OPENSSL_1_1:
- # OpenSSL 1.1.0 raises handshake error
+ if (expected is None and IS_OPENSSL_1_1
+ and ssl.OPENSSL_VERSION_INFO < (1, 1, 0, 6)):
+ # OpenSSL 1.1.0 to 1.1.0e raises handshake error
self.assertIsInstance(stats, ssl.SSLError)
else:
msg = "failed trying %s (s) and %s (c).\n" \
Index: Python-2.7.13/Misc/NEWS.d/next/Tests/2017-07-25-15-27-44.bpo-30715.Sp7bTF.rst
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ Python-2.7.13/Misc/NEWS.d/next/Tests/2017-07-25-15-27-44.bpo-30715.Sp7bTF.rst 2017-09-14 16:14:26.733996348 +0200
@@ -0,0 +1,2 @@
+Address ALPN callback changes for OpenSSL 1.1.0f. The latest version behaves
+like OpenSSL 1.0.2 and no longer aborts handshake.

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:35d543986882f78261f97787fd3e06274bfa6df29fac9b4a94f73930ff98f731
size 12495628

View File

@ -1,16 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iQIcBAABCAAGBQJYVZxZAAoJEATDZ8IYrdT/YCoP/103Idy0ETFqOE+Vt7vLI2cU
Ct0cyPy5ZBRIjZmcav8R2rKPKC1EjE9BfsJDdPevm2drBu18IjP59fqL47unCQ37
luoUb4vOCjuSu0NesTsVPW+Bw0Imr2Qs3UJeuIaHP/KFjg/1kjOIxOhzk0AAZa/n
mWBGzOcCJ8jRAhdWH9YHT93QwmKG4zaqxlmF6c7CrbgRVUJeh6kUlCJOiFXCkkNW
Nu2fCOvh1+bMtmMsZsbb6IZeccyJOn4l+EqbzasX1egerbw2spC6ECMkhiZT6RRI
mQQ2fmdYDAwn+CUIrYra2rxMqlAo9rRIp43A8kWyVfOAnUlljHhjyS02zmavrs8I
9zyM1Fofu20q0Fk9ktX9vPZU6fqum2zbYFzBZkt/qYrAEiV9iCfztyws3+65qgYv
dzw4jWM9oALzW2kCPD4GZOO7QpfPXjUec63bara+orO82Ifeq2qT7Zob+bBjd943
A1skaO7X5Qhcfem1bdS3ZvgNMgwCqggNvXwbhDTY7Fk4zxCemjFI5JTe531wUKGt
Kh1aAFQblAea6CmVC2GhhQ6Lmrnp1S+OyJaUIrT3ALW1sF1Iqy+wLVc6ltKH1fje
57m2z/qmn9X28VF3de7Tg8mvDwgQthJWG/X9TYeLa7cHzJ3od3w+7I7jI3dMigdM
RV2cSjUPE9UD9P1y+CYo
=dR4B
-----END PGP SIGNATURE-----

3
Python-2.7.14.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:71ffb26e09e78650e424929b2b457b9c912ac216576e6bd9e7d204ed03296a66
size 12576112

16
Python-2.7.14.tar.xz.asc Normal file
View File

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIcBAABCAAGBQJZvWXWAAoJEATDZ8IYrdT/8IgQAJwkDGd3oUY2WWhlh7kUnOIs
X0hEqSvMM2itL/DpNVTTcCyviqPXPxH4XkCn6E4g9cPiMKYID5KL8V5CK+rSHaZY
ckJ9FKZ5Hv6bF0hEF2gUN0vtd9w2qh7lnvjGLtMcXwfe3cN1qg6X07+a5dZvxYWw
EhPtdEHi2u+2UBlhEjCGb2njZ9SDbNqx0KjcuO0hTxEfzpqWCTzIwNJwQS8RYX1r
LBdqID+xQqLaX19tAkyxa3F8F1bF1esvEWJyyLy1LVvAfL8QYzAObOYOb+dlohUU
/BCCP2J8Nn+O49vF4VSo35xU2ngHajDKL2xMMes5JLd5oVHEWfdATADv3gXNINy9
9zQowUNwV/bsQFHncHl1i6O1jAZbiSeYw8+ZVo6H2jxWwTAbEgMmx5oldzqB8FiQ
kDGEr0130686GrkOFVYI2Ttj4bIhminwCJk3/w22Pe6sxh5ZbFKj0gnQ1vLhzXPy
EH52KcOi+9kn3w6yYQmOZHkwheY1Gkgl23VifkZVCkz7iZZxlbD2WyuzvDPh9U6o
aVzbnOaBniNeAYcXcb8GGVCz5L4um75BpTtky2eufZhf377HfmCZ9Xo38nuWqN4T
qZj+bto4UtWcbQXVi+dz//v1jVPIOWbhS/TTDI/Ht45m2gktfZegB/m6NwBnvtuC
SgD09Q4KFLCWJKp62vNI
=FnWM
-----END PGP SIGNATURE-----

View File

@ -1,13 +0,0 @@
Index: Python-2.7.12/Makefile.pre.in
===================================================================
--- Python-2.7.12.orig/Makefile.pre.in
+++ Python-2.7.12/Makefile.pre.in
@@ -319,7 +319,7 @@ OPCODETARGETS_H= \
$(srcdir)/Python/opcode_targets.h
OPCODETARGETGEN= \
- $(srcdir)/Python/makeopcodetargets.py
+ ./python $(srcdir)/Python/makeopcodetargets.py
OPCODETARGETGEN_FILES= \
$(OPCODETARGETGEN) $(srcdir)/Lib/opcode.py

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cba0fce8f70444fe87405efcf005a0ea408935cbb859862eda3bd2df1177b0ce
size 10712181

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:65832a14df4aa8dc2887e294de4d8abefbc4c9466af12a0b8315acf6faec7d8a
size 10768393

View File

@ -1,300 +0,0 @@
Index: Python-2.7.13/Objects/unicodeobject.c
===================================================================
--- Python-2.7.13.orig/Objects/unicodeobject.c
+++ Python-2.7.13/Objects/unicodeobject.c
@@ -5732,20 +5732,20 @@ PyUnicode_Join(PyObject *separator, PyOb
/* Make sure we have enough space for the separator and the item. */
itemlen = PyUnicode_GET_SIZE(item);
- new_res_used = res_used + itemlen;
- if (new_res_used < 0)
+ if (res_used > PY_SSIZE_T_MAX - itemlen)
goto Overflow;
+ new_res_used = res_used + itemlen;
if (i < seqlen - 1) {
- new_res_used += seplen;
- if (new_res_used < 0)
+ if (new_res_used > PY_SSIZE_T_MAX - seplen)
goto Overflow;
+ new_res_used += seplen;
}
if (new_res_used > res_alloc) {
/* double allocated size until it's big enough */
do {
- res_alloc += res_alloc;
- if (res_alloc <= 0)
+ if (res_alloc >= PY_SSIZE_T_MAX - res_alloc)
goto Overflow;
+ res_alloc += res_alloc;
} while (new_res_used > res_alloc);
if (_PyUnicode_Resize(&res, res_alloc) < 0) {
Py_DECREF(item);
@@ -5943,7 +5943,7 @@ PyObject *replace(PyUnicodeObject *self,
} else {
Py_ssize_t n, i, j;
- Py_ssize_t product, new_size, delta;
+ Py_ssize_t new_size, delta;
Py_UNICODE *p;
/* replace strings */
@@ -5956,18 +5956,12 @@ PyObject *replace(PyUnicodeObject *self,
if (delta == 0) {
new_size = self->length;
} else {
- product = n * (str2->length - str1->length);
- if ((product / (str2->length - str1->length)) != n) {
- PyErr_SetString(PyExc_OverflowError,
- "replace string is too long");
- return NULL;
- }
- new_size = self->length + product;
- if (new_size < 0) {
+ if (str2->length - str1->length > (PY_SSIZE_T_MAX - self->length) / n) {
PyErr_SetString(PyExc_OverflowError,
"replace string is too long");
return NULL;
}
+ new_size = self->length + n * (str2->length - str1->length);
}
u = _PyUnicode_New(new_size);
if (!u)
Index: Python-2.7.13/Objects/tupleobject.c
===================================================================
--- Python-2.7.13.orig/Objects/tupleobject.c
+++ Python-2.7.13/Objects/tupleobject.c
@@ -446,9 +446,9 @@ tupleconcat(register PyTupleObject *a, r
return NULL;
}
#define b ((PyTupleObject *)bb)
- size = Py_SIZE(a) + Py_SIZE(b);
- if (size < 0)
+ if (Py_SIZE(a) > PY_SSIZE_T_MAX - Py_SIZE(b))
return PyErr_NoMemory();
+ size = Py_SIZE(a) + Py_SIZE(b);
np = (PyTupleObject *) PyTuple_New(size);
if (np == NULL) {
return NULL;
@@ -490,9 +490,9 @@ tuplerepeat(PyTupleObject *a, Py_ssize_t
if (Py_SIZE(a) == 0)
return PyTuple_New(0);
}
- size = Py_SIZE(a) * n;
- if (size/Py_SIZE(a) != n)
+ if (n > PY_SSIZE_T_MAX / Py_SIZE(a))
return PyErr_NoMemory();
+ size = Py_SIZE(a) * n;
np = (PyTupleObject *) PyTuple_New(size);
if (np == NULL)
return NULL;
diff -r 5ea0fef6ec53 Objects/bytearrayobject.c
--- a/Objects/bytearrayobject.c Wed Dec 28 15:41:09 2016 -0800
+++ b/Objects/bytearrayobject.c Thu Jan 05 14:05:29 2017 +0800
@@ -1571,31 +1571,30 @@
{
char *self_s, *result_s;
Py_ssize_t self_len, result_len;
- Py_ssize_t count, i, product;
+ Py_ssize_t count, i;
PyByteArrayObject *result;
self_len = PyByteArray_GET_SIZE(self);
- /* 1 at the end plus 1 after every character */
- count = self_len+1;
- if (maxcount < count)
+ /* 1 at the end plus 1 after every character;
+ count = min(maxcount, self_len + 1) */
+ if (maxcount <= self_len) {
count = maxcount;
+ }
+ else {
+ /* Can't overflow: self_len + 1 <= maxcount <= PY_SSIZE_T_MAX. */
+ count = self_len + 1;
+ }
/* Check for overflow */
/* result_len = count * to_len + self_len; */
- product = count * to_len;
- if (product / to_len != count) {
+ assert(count > 0);
+ if (to_len > (PY_SSIZE_T_MAX - self_len) / count) {
PyErr_SetString(PyExc_OverflowError,
- "replace string is too long");
+ "replace bytes is too long");
return NULL;
}
- result_len = product + self_len;
- if (result_len < 0) {
- PyErr_SetString(PyExc_OverflowError,
- "replace string is too long");
- return NULL;
- }
-
+ result_len = count * to_len + self_len;
if (! (result = (PyByteArrayObject *)
PyByteArray_FromStringAndSize(NULL, result_len)) )
return NULL;
@@ -1824,7 +1823,7 @@
char *self_s, *result_s;
char *start, *next, *end;
Py_ssize_t self_len, result_len;
- Py_ssize_t count, product;
+ Py_ssize_t count;
PyByteArrayObject *result;
self_s = PyByteArray_AS_STRING(self);
@@ -1838,16 +1837,12 @@
/* use the difference between current and new, hence the "-1" */
/* result_len = self_len + count * (to_len-1) */
- product = count * (to_len-1);
- if (product / (to_len-1) != count) {
+ assert(count > 0);
+ if (to_len - 1 > (PY_SSIZE_T_MAX - self_len) / count) {
PyErr_SetString(PyExc_OverflowError, "replace bytes is too long");
return NULL;
}
- result_len = self_len + product;
- if (result_len < 0) {
- PyErr_SetString(PyExc_OverflowError, "replace bytes is too long");
- return NULL;
- }
+ result_len = self_len + count * (to_len - 1);
if ( (result = (PyByteArrayObject *)
PyByteArray_FromStringAndSize(NULL, result_len)) == NULL)
@@ -1891,7 +1886,7 @@
char *self_s, *result_s;
char *start, *next, *end;
Py_ssize_t self_len, result_len;
- Py_ssize_t count, offset, product;
+ Py_ssize_t count, offset;
PyByteArrayObject *result;
self_s = PyByteArray_AS_STRING(self);
@@ -1908,16 +1903,12 @@
/* Check for overflow */
/* result_len = self_len + count * (to_len-from_len) */
- product = count * (to_len-from_len);
- if (product / (to_len-from_len) != count) {
+ assert(count > 0);
+ if (to_len - from_len > (PY_SSIZE_T_MAX - self_len) / count) {
PyErr_SetString(PyExc_OverflowError, "replace bytes is too long");
return NULL;
}
- result_len = self_len + product;
- if (result_len < 0) {
- PyErr_SetString(PyExc_OverflowError, "replace bytes is too long");
- return NULL;
- }
+ result_len = self_len + count * (to_len - from_len);
if ( (result = (PyByteArrayObject *)
PyByteArray_FromStringAndSize(NULL, result_len)) == NULL)
diff -r 5ea0fef6ec53 Objects/stringobject.c
--- a/Objects/stringobject.c Wed Dec 28 15:41:09 2016 -0800
+++ b/Objects/stringobject.c Thu Jan 05 14:05:29 2017 +0800
@@ -2358,31 +2358,30 @@
{
char *self_s, *result_s;
Py_ssize_t self_len, result_len;
- Py_ssize_t count, i, product;
+ Py_ssize_t count, i;
PyStringObject *result;
self_len = PyString_GET_SIZE(self);
- /* 1 at the end plus 1 after every character */
- count = self_len+1;
- if (maxcount < count)
+ /* 1 at the end plus 1 after every character;
+ count = min(maxcount, self_len + 1) */
+ if (maxcount <= self_len) {
count = maxcount;
+ }
+ else {
+ /* Can't overflow: self_len + 1 <= maxcount <= PY_SSIZE_T_MAX. */
+ count = self_len + 1;
+ }
/* Check for overflow */
/* result_len = count * to_len + self_len; */
- product = count * to_len;
- if (product / to_len != count) {
+ assert(count > 0);
+ if (to_len > (PY_SSIZE_T_MAX - self_len) / count) {
PyErr_SetString(PyExc_OverflowError,
"replace string is too long");
return NULL;
}
- result_len = product + self_len;
- if (result_len < 0) {
- PyErr_SetString(PyExc_OverflowError,
- "replace string is too long");
- return NULL;
- }
-
+ result_len = count * to_len + self_len;
if (! (result = (PyStringObject *)
PyString_FromStringAndSize(NULL, result_len)) )
return NULL;
@@ -2610,7 +2609,7 @@
char *self_s, *result_s;
char *start, *next, *end;
Py_ssize_t self_len, result_len;
- Py_ssize_t count, product;
+ Py_ssize_t count;
PyStringObject *result;
self_s = PyString_AS_STRING(self);
@@ -2624,16 +2623,12 @@
/* use the difference between current and new, hence the "-1" */
/* result_len = self_len + count * (to_len-1) */
- product = count * (to_len-1);
- if (product / (to_len-1) != count) {
+ assert(count > 0);
+ if (to_len - 1 > (PY_SSIZE_T_MAX - self_len) / count) {
PyErr_SetString(PyExc_OverflowError, "replace string is too long");
return NULL;
}
- result_len = self_len + product;
- if (result_len < 0) {
- PyErr_SetString(PyExc_OverflowError, "replace string is too long");
- return NULL;
- }
+ result_len = self_len + count * (to_len - 1);
if ( (result = (PyStringObject *)
PyString_FromStringAndSize(NULL, result_len)) == NULL)
@@ -2676,7 +2671,7 @@
char *self_s, *result_s;
char *start, *next, *end;
Py_ssize_t self_len, result_len;
- Py_ssize_t count, offset, product;
+ Py_ssize_t count, offset;
PyStringObject *result;
self_s = PyString_AS_STRING(self);
@@ -2693,16 +2688,12 @@
/* Check for overflow */
/* result_len = self_len + count * (to_len-from_len) */
- product = count * (to_len-from_len);
- if (product / (to_len-from_len) != count) {
+ assert(count > 0);
+ if (to_len - from_len > (PY_SSIZE_T_MAX - self_len) / count) {
PyErr_SetString(PyExc_OverflowError, "replace string is too long");
return NULL;
}
- result_len = self_len + product;
- if (result_len < 0) {
- PyErr_SetString(PyExc_OverflowError, "replace string is too long");
- return NULL;
- }
+ result_len = self_len + count * (to_len - from_len);
if ( (result = (PyStringObject *)
PyString_FromStringAndSize(NULL, result_len)) == NULL)

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:54d97a289ad24f419f195440945056db1f1ba1c3d12e5824cf25837c2ccbfa59
size 6874237

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ce4db77abd28c7067cc2de1aecea6d8939b735dd8451f310f4f4cf163fb78fa6
size 9343063

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cb93a147705b771c91798aa512fa836e3ae38736b4df4fa10eb518e96fec8060
size 9343109

View File

@ -1,9 +1,11 @@
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -573,8 +573,15 @@
-DHGVERSION="\"`LC_ALL=C $(HGVERSION)`\"" \
-DHGTAG="\"`LC_ALL=C $(HGTAG)`\"" \
-DHGBRANCH="\"`LC_ALL=C $(HGBRANCH)`\"" \
Index: Python-2.7.14/Makefile.pre.in
===================================================================
--- Python-2.7.14.orig/Makefile.pre.in
+++ Python-2.7.14/Makefile.pre.in
@@ -638,8 +638,15 @@ Modules/getbuildinfo.o: $(PARSER_OBJS) \
-DGITVERSION="\"`LC_ALL=C $(GITVERSION)`\"" \
-DGITTAG="\"`LC_ALL=C $(GITTAG)`\"" \
-DGITBRANCH="\"`LC_ALL=C $(GITBRANCH)`\"" \
+ -DDATE="\"`LC_ALL=C date -u -r Makefile.pre.in +"%b %d %Y"`\"" \
+ -DTIME="\"`LC_ALL=C date -u -r Makefile.pre.in +"%T"`\"" \
-o $@ $(srcdir)/Modules/getbuildinfo.c

View File

@ -1,8 +1,8 @@
Index: Python-2.7.13/configure.ac
Index: Python-2.7.14/configure.ac
===================================================================
--- Python-2.7.13.orig/configure.ac
+++ Python-2.7.13/configure.ac
@@ -759,6 +759,41 @@ SunOS*)
--- Python-2.7.14.orig/configure.ac
+++ Python-2.7.14/configure.ac
@@ -758,6 +758,41 @@ SunOS*)
;;
esac
@ -44,10 +44,10 @@ Index: Python-2.7.13/configure.ac
AC_SUBST(LIBRARY)
AC_MSG_CHECKING(LIBRARY)
Index: Python-2.7.13/Include/pythonrun.h
Index: Python-2.7.14/Include/pythonrun.h
===================================================================
--- Python-2.7.13.orig/Include/pythonrun.h
+++ Python-2.7.13/Include/pythonrun.h
--- Python-2.7.14.orig/Include/pythonrun.h
+++ Python-2.7.14/Include/pythonrun.h
@@ -108,6 +108,8 @@ PyAPI_FUNC(char *) Py_GetPath(void);
/* In their own files */
PyAPI_FUNC(const char *) Py_GetVersion(void);
@ -57,10 +57,10 @@ Index: Python-2.7.13/Include/pythonrun.h
PyAPI_FUNC(const char *) Py_GetCopyright(void);
PyAPI_FUNC(const char *) Py_GetCompiler(void);
PyAPI_FUNC(const char *) Py_GetBuildInfo(void);
Index: Python-2.7.13/Lib/distutils/command/install.py
Index: Python-2.7.14/Lib/distutils/command/install.py
===================================================================
--- Python-2.7.13.orig/Lib/distutils/command/install.py
+++ Python-2.7.13/Lib/distutils/command/install.py
--- Python-2.7.14.orig/Lib/distutils/command/install.py
+++ Python-2.7.14/Lib/distutils/command/install.py
@@ -22,6 +22,8 @@ from site import USER_BASE
from site import USER_SITE
@ -79,10 +79,10 @@ Index: Python-2.7.13/Lib/distutils/command/install.py
'headers': '$base/include/python$py_version_short/$dist_name',
'scripts': '$base/bin',
'data' : '$base',
Index: Python-2.7.13/Lib/distutils/sysconfig.py
Index: Python-2.7.14/Lib/distutils/sysconfig.py
===================================================================
--- Python-2.7.13.orig/Lib/distutils/sysconfig.py
+++ Python-2.7.13/Lib/distutils/sysconfig.py
--- Python-2.7.14.orig/Lib/distutils/sysconfig.py
+++ Python-2.7.14/Lib/distutils/sysconfig.py
@@ -119,8 +119,11 @@ def get_python_lib(plat_specific=0, stan
prefix = plat_specific and EXEC_PREFIX or PREFIX
@ -97,10 +97,10 @@ Index: Python-2.7.13/Lib/distutils/sysconfig.py
if standard_lib:
return libpython
else:
Index: Python-2.7.13/Lib/pydoc.py
Index: Python-2.7.14/Lib/pydoc.py
===================================================================
--- Python-2.7.13.orig/Lib/pydoc.py
+++ Python-2.7.13/Lib/pydoc.py
--- Python-2.7.14.orig/Lib/pydoc.py
+++ Python-2.7.14/Lib/pydoc.py
@@ -375,7 +375,7 @@ class Doc:
docmodule = docclass = docroutine = docother = docproperty = docdata = fail
@ -110,10 +110,10 @@ Index: Python-2.7.13/Lib/pydoc.py
"python"+sys.version[0:3])):
"""Return the location of module docs or None"""
Index: Python-2.7.13/Lib/site.py
Index: Python-2.7.14/Lib/site.py
===================================================================
--- Python-2.7.13.orig/Lib/site.py
+++ Python-2.7.13/Lib/site.py
--- Python-2.7.14.orig/Lib/site.py
+++ Python-2.7.14/Lib/site.py
@@ -231,29 +231,38 @@ def getuserbase():
USER_BASE = get_config_var('userbase')
return USER_BASE
@ -197,10 +197,10 @@ Index: Python-2.7.13/Lib/site.py
return sitepackages
def addsitepackages(known_paths):
Index: Python-2.7.13/Lib/sysconfig.py
Index: Python-2.7.14/Lib/sysconfig.py
===================================================================
--- Python-2.7.13.orig/Lib/sysconfig.py
+++ Python-2.7.13/Lib/sysconfig.py
--- Python-2.7.14.orig/Lib/sysconfig.py
+++ Python-2.7.14/Lib/sysconfig.py
@@ -7,10 +7,10 @@ from os.path import pardir, realpath
_INSTALL_SCHEMES = {
@ -229,10 +229,10 @@ Index: Python-2.7.13/Lib/sysconfig.py
'include': '{userbase}/include/python{py_version_short}',
'scripts': '{userbase}/bin',
'data' : '{userbase}',
Index: Python-2.7.13/Lib/test/test_dl.py
Index: Python-2.7.14/Lib/test/test_dl.py
===================================================================
--- Python-2.7.13.orig/Lib/test/test_dl.py
+++ Python-2.7.13/Lib/test/test_dl.py
--- Python-2.7.14.orig/Lib/test/test_dl.py
+++ Python-2.7.14/Lib/test/test_dl.py
@@ -4,10 +4,11 @@
import unittest
from test.test_support import verbose, import_module
@ -247,11 +247,11 @@ Index: Python-2.7.13/Lib/test/test_dl.py
('/usr/bin/cygwin1.dll', 'getpid'),
('/usr/lib/libc.dylib', 'getpid'),
]
Index: Python-2.7.13/Lib/test/test_site.py
Index: Python-2.7.14/Lib/test/test_site.py
===================================================================
--- Python-2.7.13.orig/Lib/test/test_site.py
+++ Python-2.7.13/Lib/test/test_site.py
@@ -235,12 +235,16 @@ class HelperFunctionsTests(unittest.Test
--- Python-2.7.14.orig/Lib/test/test_site.py
+++ Python-2.7.14/Lib/test/test_site.py
@@ -252,12 +252,16 @@ class HelperFunctionsTests(unittest.Test
self.assertEqual(dirs[0], wanted)
elif os.sep == '/':
# OS X, Linux, FreeBSD, etc
@ -271,10 +271,10 @@ Index: Python-2.7.13/Lib/test/test_site.py
else:
# other platforms
self.assertEqual(len(dirs), 2)
Index: Python-2.7.13/Lib/trace.py
Index: Python-2.7.14/Lib/trace.py
===================================================================
--- Python-2.7.13.orig/Lib/trace.py
+++ Python-2.7.13/Lib/trace.py
--- Python-2.7.14.orig/Lib/trace.py
+++ Python-2.7.14/Lib/trace.py
@@ -754,10 +754,10 @@ def main(argv=None):
# should I also call expanduser? (after all, could use $HOME)
@ -288,11 +288,11 @@ Index: Python-2.7.13/Lib/trace.py
"python" + sys.version[:3]))
s = os.path.normpath(s)
ignore_dirs.append(s)
Index: Python-2.7.13/Makefile.pre.in
Index: Python-2.7.14/Makefile.pre.in
===================================================================
--- Python-2.7.13.orig/Makefile.pre.in
+++ Python-2.7.13/Makefile.pre.in
@@ -92,6 +92,8 @@ PY_CFLAGS= $(CFLAGS) $(CPPFLAGS) $(CFLAG
--- Python-2.7.14.orig/Makefile.pre.in
+++ Python-2.7.14/Makefile.pre.in
@@ -91,6 +91,8 @@ PY_CFLAGS= $(CFLAGS) $(CPPFLAGS) $(CFLAG
# Machine-dependent subdirectories
MACHDEP= @MACHDEP@
@ -301,7 +301,7 @@ Index: Python-2.7.13/Makefile.pre.in
# Multiarch directory (may be empty)
MULTIARCH= @MULTIARCH@
@@ -668,6 +670,7 @@ Modules/getpath.o: $(srcdir)/Modules/get
@@ -644,6 +646,7 @@ Modules/getpath.o: $(srcdir)/Modules/get
-DEXEC_PREFIX='"$(exec_prefix)"' \
-DVERSION='"$(VERSION)"' \
-DVPATH='"$(VPATH)"' \
@ -309,8 +309,8 @@ Index: Python-2.7.13/Makefile.pre.in
-o $@ $(srcdir)/Modules/getpath.c
Modules/python.o: $(srcdir)/Modules/python.c
@@ -708,7 +711,7 @@ $(AST_C): $(AST_ASDL) $(ASDLGEN_FILES)
Python/compile.o Python/symtable.o Python/ast.o: $(GRAMMAR_H) $(AST_H)
@@ -692,7 +695,7 @@ regen-ast:
Python/compile.o Python/symtable.o Python/ast.o: $(srcdir)/Include/graminit.h $(srcdir)/Include/Python-ast.h
Python/getplatform.o: $(srcdir)/Python/getplatform.c
- $(CC) -c $(PY_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c
@ -318,10 +318,10 @@ Index: Python-2.7.13/Makefile.pre.in
Python/importdl.o: $(srcdir)/Python/importdl.c
$(CC) -c $(PY_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c
Index: Python-2.7.13/Modules/getpath.c
Index: Python-2.7.14/Modules/getpath.c
===================================================================
--- Python-2.7.13.orig/Modules/getpath.c
+++ Python-2.7.13/Modules/getpath.c
--- Python-2.7.14.orig/Modules/getpath.c
+++ Python-2.7.14/Modules/getpath.c
@@ -100,6 +100,8 @@
#error "PREFIX, EXEC_PREFIX, VERSION, and VPATH must be constant defined"
#endif
@ -340,10 +340,10 @@ Index: Python-2.7.13/Modules/getpath.c
static void
reduce(char *dir)
Index: Python-2.7.13/Python/getplatform.c
Index: Python-2.7.14/Python/getplatform.c
===================================================================
--- Python-2.7.13.orig/Python/getplatform.c
+++ Python-2.7.13/Python/getplatform.c
--- Python-2.7.14.orig/Python/getplatform.c
+++ Python-2.7.14/Python/getplatform.c
@@ -10,3 +10,23 @@ Py_GetPlatform(void)
{
return PLATFORM;
@ -368,10 +368,10 @@ Index: Python-2.7.13/Python/getplatform.c
+{
+ return LIB;
+}
Index: Python-2.7.13/Python/sysmodule.c
Index: Python-2.7.14/Python/sysmodule.c
===================================================================
--- Python-2.7.13.orig/Python/sysmodule.c
+++ Python-2.7.13/Python/sysmodule.c
--- Python-2.7.14.orig/Python/sysmodule.c
+++ Python-2.7.14/Python/sysmodule.c
@@ -1437,6 +1437,10 @@ _PySys_Init(void)
PyString_FromString(Py_GetCopyright()));
SET_SYS_FROM_STRING("platform",
@ -383,10 +383,10 @@ Index: Python-2.7.13/Python/sysmodule.c
SET_SYS_FROM_STRING("executable",
PyString_FromString(Py_GetProgramFullPath()));
SET_SYS_FROM_STRING("prefix",
Index: Python-2.7.13/setup.py
Index: Python-2.7.14/setup.py
===================================================================
--- Python-2.7.13.orig/setup.py
+++ Python-2.7.13/setup.py
--- Python-2.7.14.orig/setup.py
+++ Python-2.7.14/setup.py
@@ -456,7 +456,7 @@ class PyBuildExt(build_ext):
def detect_modules(self):
# Ensure that /usr/local is always used
@ -410,7 +410,7 @@ Index: Python-2.7.13/setup.py
extra_link_args=readline_extra_link_args,
libraries=readline_libs) )
else:
@@ -1938,18 +1938,17 @@ class PyBuildExt(build_ext):
@@ -1941,18 +1941,17 @@ class PyBuildExt(build_ext):
# Check for various platform-specific directories
if host_platform == 'sunos5':
include_dirs.append('/usr/openwin/include')

View File

@ -1,3 +1,16 @@
-------------------------------------------------------------------
Mon Nov 20 16:11:48 UTC 2017 - jmatejek@suse.com
- update to 2.7.14
* dozens of bugfixes, see NEWS for details
* fixed possible integer overflow in PyString_DecodeEscape (CVE-2017-1000158, bsc#1068664)
* fixed segfaults with dict mutated during search
* fixed possible free-after-use problems with buffer objects with custom indexing
* fixed urllib.splithost to correctly parse fragments (bpo-30500)
- drop upstreamed python-2.7.13-overflow_check.patch
- drop unneeded python-2.7.12-makeopcode.patch
- drop upstreamed 0001-2.7-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-3094.patch
-------------------------------------------------------------------
Thu Nov 2 16:53:42 UTC 2017 - mpluskal@suse.com

View File

@ -17,7 +17,7 @@
Name: python-base
Version: 2.7.13
Version: 2.7.14
Release: 0
Summary: Python Interpreter base package
License: Python-2.0
@ -54,11 +54,8 @@ Patch33: python-2.7.9-ssl_ca_path.patch
Patch34: python-2.7.9-sles-disable-verification-by-default.patch
# PATCH-FIX-UPSTREAM python-ncurses-6.0-accessors.patch dimstar@opensuse.org -- Fix build with NCurses 6.0 and OPAQUE_WINDOW set to 1
Patch35: python-ncurses-6.0-accessors.patch
Patch36: python-2.7.13-overflow_check.patch
Patch37: python-2.7.12-makeopcode.patch
# PATCH-FIX-UPSTREAM bmwiedemann@suse.de -- allow python packages to build reproducibly
Patch38: reproducible.patch
Patch39: 0001-2.7-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-3094.patch
# COMMON-PATCH-END
%define python_version %(echo %{tarversion} | head -c 3)
BuildRequires: automake
@ -161,10 +158,7 @@ other applications.
%patch34 -p1
%endif
%patch35 -p1
%patch36 -p1
%patch37 -p1
%patch38 -p1
%patch39 -p1
# drop Autoconf version requirement
sed -i 's/^version_required/dnl version_required/' configure.ac

View File

@ -16,10 +16,10 @@ This patch was partially autogenerated:
setup.py | 6 +-
6 files changed, 120 insertions(+), 41 deletions(-)
Index: Python-2.7.5/Lib/bsddb/test/test_all.py
Index: Python-2.7.14/Lib/bsddb/test/test_all.py
===================================================================
--- Python-2.7.5.orig/Lib/bsddb/test/test_all.py
+++ Python-2.7.5/Lib/bsddb/test/test_all.py
--- Python-2.7.14.orig/Lib/bsddb/test/test_all.py
+++ Python-2.7.14/Lib/bsddb/test/test_all.py
@@ -74,8 +74,9 @@ if sys.version_info[0] >= 3 :
key = key.decode(charset)
return (key, value.decode(charset))
@ -43,7 +43,7 @@ Index: Python-2.7.5/Lib/bsddb/test/test_all.py
return self._fix(v)
def pget(self, key=None, data=None, flags=0) :
@@ -492,7 +493,11 @@ def print_versions():
@@ -489,7 +490,11 @@ def print_versions():
print 'py module: %s' % getattr(bsddb, "__file"+suffix)
print 'extension module: %s' % getattr(bsddb, "__file"+suffix)
@ -56,10 +56,10 @@ Index: Python-2.7.5/Lib/bsddb/test/test_all.py
print 'My pid: %s' % os.getpid()
print '-=' * 38
Index: Python-2.7.5/Lib/bsddb/test/test_misc.py
Index: Python-2.7.14/Lib/bsddb/test/test_misc.py
===================================================================
--- Python-2.7.5.orig/Lib/bsddb/test/test_misc.py
+++ Python-2.7.5/Lib/bsddb/test/test_misc.py
--- Python-2.7.14.orig/Lib/bsddb/test/test_misc.py
+++ Python-2.7.14/Lib/bsddb/test/test_misc.py
@@ -46,8 +46,9 @@ class MiscTestCase(unittest.TestCase):
d[repr(i)] = repr(100*i)
db.close()
@ -72,10 +72,10 @@ Index: Python-2.7.5/Lib/bsddb/test/test_misc.py
db.close()
# http://sourceforge.net/tracker/index.php?func=detail&aid=1708868&group_id=13900&atid=313900
Index: Python-2.7.5/Lib/bsddb/test/test_replication.py
Index: Python-2.7.14/Lib/bsddb/test/test_replication.py
===================================================================
--- Python-2.7.5.orig/Lib/bsddb/test/test_replication.py
+++ Python-2.7.5/Lib/bsddb/test/test_replication.py
--- Python-2.7.14.orig/Lib/bsddb/test/test_replication.py
+++ Python-2.7.14/Lib/bsddb/test/test_replication.py
@@ -165,21 +165,10 @@ class DBReplicationManager(DBReplication
# is not generated if the master has no new transactions.
# This is solved in BDB 4.6 (#15542).
@ -100,7 +100,7 @@ Index: Python-2.7.5/Lib/bsddb/test/test_replication.py
d = self.dbenvMaster.repmgr_site_list()
self.assertEqual(len(d), 1)
@@ -239,14 +228,6 @@ class DBReplicationManager(DBReplication
@@ -237,14 +226,6 @@ class DBReplicationManager(DBReplication
txn.commit()
if v is None :
time.sleep(0.02)
@ -112,10 +112,10 @@ Index: Python-2.7.5/Lib/bsddb/test/test_replication.py
- if time.time()>=timeout and startup_timeout:
- self.skipTest("replication test skipped due to random failure, "
- "see issue 3892")
self.assertTrue(time.time()<timeout)
self.assertLess(time.time(), timeout)
self.assertEqual("123", v)
@@ -377,7 +358,7 @@ class DBBaseReplication(DBReplication) :
@@ -375,7 +356,7 @@ class DBBaseReplication(DBReplication) :
# is not generated if the master has no new transactions.
# This is solved in BDB 4.6 (#15542).
import time
@ -124,10 +124,10 @@ Index: Python-2.7.5/Lib/bsddb/test/test_replication.py
while (time.time()<timeout) and not (self.confirmed_master and
self.client_startupdone) :
time.sleep(0.02)
Index: Python-2.7.5/Modules/_bsddb.c
Index: Python-2.7.14/Modules/_bsddb.c
===================================================================
--- Python-2.7.5.orig/Modules/_bsddb.c
+++ Python-2.7.5/Modules/_bsddb.c
--- Python-2.7.14.orig/Modules/_bsddb.c
+++ Python-2.7.14/Modules/_bsddb.c
@@ -124,10 +124,14 @@ typedef int Py_ssize_t;
#define NUMBER_Check PyLong_Check
#define NUMBER_AsLong PyLong_AsLong
@ -162,7 +162,7 @@ Index: Python-2.7.5/Modules/_bsddb.c
/* The same, when the value is a time_t */
static void _addTimeTToDict(PyObject* dict, char *name, time_t value)
{
@@ -2662,13 +2678,21 @@ _default_cmp(const DBT *leftKey,
@@ -2655,13 +2671,21 @@ _default_cmp(const DBT *leftKey,
static int
_db_compareCallback(DB* db,
const DBT *leftKey,
@ -185,7 +185,7 @@ Index: Python-2.7.5/Modules/_bsddb.c
if (self == NULL || self->btCompareCallback == NULL) {
MYDB_BEGIN_BLOCK_THREADS;
PyErr_SetString(PyExc_TypeError,
@@ -2776,13 +2800,21 @@ DB_set_bt_compare(DBObject* self, PyObje
@@ -2769,13 +2793,21 @@ DB_set_bt_compare(DBObject* self, PyObje
static int
_db_dupCompareCallback(DB* db,
const DBT *leftKey,
@ -208,7 +208,7 @@ Index: Python-2.7.5/Modules/_bsddb.c
if (self == NULL || self->dupCompareCallback == NULL) {
MYDB_BEGIN_BLOCK_THREADS;
PyErr_SetString(PyExc_TypeError,
@@ -3559,13 +3591,14 @@ Py_ssize_t DB_length(PyObject* _self)
@@ -3554,13 +3586,14 @@ Py_ssize_t DB_length(PyObject* _self)
err = self->db->stat(self->db, /*txnid*/ NULL, &sp, 0);
MYDB_END_ALLOW_THREADS;
@ -226,7 +226,7 @@ Index: Python-2.7.5/Modules/_bsddb.c
free(sp);
return size;
}
@@ -8406,12 +8439,22 @@ static PyObject*
@@ -8398,12 +8431,22 @@ static PyObject*
DBSequence_get(DBSequenceObject* self, PyObject* args, PyObject* kwargs)
{
int err, flags = 0;
@ -250,7 +250,7 @@ Index: Python-2.7.5/Modules/_bsddb.c
return NULL;
CHECK_SEQUENCE_NOT_CLOSED(self)
@@ -8541,8 +8584,19 @@ DBSequence_remove(DBSequenceObject* self
@@ -8533,8 +8576,19 @@ DBSequence_remove(DBSequenceObject* self
static PyObject*
DBSequence_set_cachesize(DBSequenceObject* self, PyObject* args)
{
@ -272,7 +272,7 @@ Index: Python-2.7.5/Modules/_bsddb.c
return NULL;
CHECK_SEQUENCE_NOT_CLOSED(self)
@@ -8557,7 +8611,11 @@ DBSequence_set_cachesize(DBSequenceObjec
@@ -8549,7 +8603,11 @@ DBSequence_set_cachesize(DBSequenceObjec
static PyObject*
DBSequence_get_cachesize(DBSequenceObject* self)
{
@ -285,7 +285,7 @@ Index: Python-2.7.5/Modules/_bsddb.c
CHECK_SEQUENCE_NOT_CLOSED(self)
@@ -8686,6 +8744,9 @@ DBSequence_stat(DBSequenceObject* self,
@@ -8678,6 +8736,9 @@ DBSequence_stat(DBSequenceObject* self,
#define MAKE_INT_ENTRY(name) _addIntToDict(dict_stat, #name, sp->st_##name)
@ -295,7 +295,7 @@ Index: Python-2.7.5/Modules/_bsddb.c
#define MAKE_LONG_LONG_ENTRY(name) _addDb_seq_tToDict(dict_stat, #name, sp->st_##name)
MAKE_INT_ENTRY(wait);
@@ -8695,10 +8756,15 @@ DBSequence_stat(DBSequenceObject* self,
@@ -8687,10 +8748,15 @@ DBSequence_stat(DBSequenceObject* self,
MAKE_LONG_LONG_ENTRY(last_value);
MAKE_LONG_LONG_ENTRY(min);
MAKE_LONG_LONG_ENTRY(max);
@ -311,7 +311,7 @@ Index: Python-2.7.5/Modules/_bsddb.c
#undef MAKE_LONG_LONG_ENTRY
free(sp);
@@ -9000,7 +9066,7 @@ static PyMethodDef DBEnv_methods[] = {
@@ -8992,7 +9058,7 @@ static PyMethodDef DBEnv_methods[] = {
{"txn_recover", (PyCFunction)DBEnv_txn_recover, METH_NOARGS},
#if (DBVER < 48)
{"set_rpc_server", (PyCFunction)DBEnv_set_rpc_server,
@ -320,7 +320,7 @@ Index: Python-2.7.5/Modules/_bsddb.c
#endif
{"set_mp_max_openfd", (PyCFunction)DBEnv_set_mp_max_openfd, METH_VARARGS},
{"get_mp_max_openfd", (PyCFunction)DBEnv_get_mp_max_openfd, METH_NOARGS},
@@ -9972,6 +10038,10 @@ PyMODINIT_FUNC PyInit__bsddb(void) /
@@ -9964,6 +10030,10 @@ PyMODINIT_FUNC PyInit__bsddb(void) /
ADD_INT(d, DB_LOG_ZERO);
#endif
@ -331,7 +331,7 @@ Index: Python-2.7.5/Modules/_bsddb.c
#if (DBVER >= 44)
ADD_INT(d, DB_DSYNC_DB);
#endif
@@ -10032,6 +10102,10 @@ PyMODINIT_FUNC PyInit__bsddb(void) /
@@ -10024,6 +10094,10 @@ PyMODINIT_FUNC PyInit__bsddb(void) /
ADD_INT(d, DB_EVENT_REG_PANIC);
#endif
@ -342,7 +342,7 @@ Index: Python-2.7.5/Modules/_bsddb.c
#if (DBVER >=52)
ADD_INT(d, DB_EVENT_REP_SITE_ADDED);
ADD_INT(d, DB_EVENT_REP_SITE_REMOVED);
@@ -10136,6 +10210,20 @@ PyMODINIT_FUNC PyInit__bsddb(void) /
@@ -10128,6 +10202,20 @@ PyMODINIT_FUNC PyInit__bsddb(void) /
ADD_INT(d, DB_REP_CONF_INMEM);
#endif
@ -363,10 +363,10 @@ Index: Python-2.7.5/Modules/_bsddb.c
ADD_INT(d, DB_TIMEOUT);
#if (DBVER >= 50)
Index: Python-2.7.5/Modules/bsddb.h
Index: Python-2.7.14/Modules/bsddb.h
===================================================================
--- Python-2.7.5.orig/Modules/bsddb.h
+++ Python-2.7.5/Modules/bsddb.h
--- Python-2.7.14.orig/Modules/bsddb.h
+++ Python-2.7.14/Modules/bsddb.h
@@ -110,7 +110,7 @@
#error "eek! DBVER can't handle minor versions > 9"
#endif
@ -376,11 +376,11 @@ Index: Python-2.7.5/Modules/bsddb.h
/* Python object definitions */
Index: Python-2.7.5/setup.py
Index: Python-2.7.14/setup.py
===================================================================
--- Python-2.7.5.orig/setup.py
+++ Python-2.7.5/setup.py
@@ -879,7 +879,7 @@ class PyBuildExt(build_ext):
--- Python-2.7.14.orig/setup.py
+++ Python-2.7.14/setup.py
@@ -905,7 +905,7 @@ class PyBuildExt(build_ext):
# a release. Most open source OSes come with one or more
# versions of BerkeleyDB already installed.
@ -389,7 +389,7 @@ Index: Python-2.7.5/setup.py
min_db_ver = (4, 3)
db_setup_debug = False # verbose debug prints from this script?
@@ -919,6 +919,7 @@ class PyBuildExt(build_ext):
@@ -945,6 +945,7 @@ class PyBuildExt(build_ext):
# construct a list of paths to look for the header file in on
# top of the normal inc_dirs.
db_inc_paths = [
@ -397,7 +397,7 @@ Index: Python-2.7.5/setup.py
'/usr/include/db4',
'/usr/local/include/db4',
'/opt/sfw/include/db4',
@@ -958,6 +959,7 @@ class PyBuildExt(build_ext):
@@ -984,6 +985,7 @@ class PyBuildExt(build_ext):
for dn in inc_dirs:
std_variants.append(os.path.join(dn, 'db3'))
std_variants.append(os.path.join(dn, 'db4'))

View File

@ -1,3 +1,16 @@
-------------------------------------------------------------------
Mon Nov 20 16:11:48 UTC 2017 - jmatejek@suse.com
- update to 2.7.14
* dozens of bugfixes, see NEWS for details
* fixed possible integer overflow in PyString_DecodeEscape (CVE-2017-1000158, bsc#1068664)
* fixed segfaults with dict mutated during search
* fixed possible free-after-use problems with buffer objects with custom indexing
* fixed urllib.splithost to correctly parse fragments (bpo-30500)
- drop upstreamed python-2.7.13-overflow_check.patch
- drop unneeded python-2.7.12-makeopcode.patch
- drop upstreamed 0001-2.7-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-3094.patch
-------------------------------------------------------------------
Tue Jan 3 17:42:16 UTC 2017 - jmatejek@suse.com

View File

@ -17,7 +17,7 @@
Name: python-doc
Version: 2.7.13
Version: 2.7.14
Release: 0
Summary: Additional Package Documentation for Python
License: Python-2.0
@ -55,11 +55,8 @@ Patch33: python-2.7.9-ssl_ca_path.patch
Patch34: python-2.7.9-sles-disable-verification-by-default.patch
# PATCH-FIX-UPSTREAM python-ncurses-6.0-accessors.patch dimstar@opensuse.org -- Fix build with NCurses 6.0 and OPAQUE_WINDOW set to 1
Patch35: python-ncurses-6.0-accessors.patch
Patch36: python-2.7.13-overflow_check.patch
Patch37: python-2.7.12-makeopcode.patch
# PATCH-FIX-UPSTREAM bmwiedemann@suse.de -- allow python packages to build reproducibly
Patch38: reproducible.patch
Patch39: 0001-2.7-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-3094.patch
# COMMON-PATCH-END
Provides: pyth_doc
Provides: pyth_ps
@ -108,10 +105,7 @@ Python, and Macintosh Module Reference in PDF format.
%patch34 -p1
%endif
%patch35 -p1
%patch36 -p1
%patch37 -p1
%patch38 -p1
%patch39 -p1
# drop Autoconf version requirement
sed -i 's/^version_required/dnl version_required/' configure.ac

View File

@ -1,3 +1,16 @@
-------------------------------------------------------------------
Mon Nov 20 16:11:48 UTC 2017 - jmatejek@suse.com
- update to 2.7.14
* dozens of bugfixes, see NEWS for details
* fixed possible integer overflow in PyString_DecodeEscape (CVE-2017-1000158, bsc#1068664)
* fixed segfaults with dict mutated during search
* fixed possible free-after-use problems with buffer objects with custom indexing
* fixed urllib.splithost to correctly parse fragments (bpo-30500)
- drop upstreamed python-2.7.13-overflow_check.patch
- drop unneeded python-2.7.12-makeopcode.patch
- drop upstreamed 0001-2.7-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-3094.patch
-------------------------------------------------------------------
Thu Sep 14 14:12:38 UTC 2017 - vcizek@suse.com

View File

@ -17,7 +17,7 @@
Name: python
Version: 2.7.13
Version: 2.7.14
Release: 0
Summary: Python Interpreter
License: Python-2.0
@ -60,11 +60,8 @@ Patch33: python-2.7.9-ssl_ca_path.patch
Patch34: python-2.7.9-sles-disable-verification-by-default.patch
# PATCH-FIX-UPSTREAM python-ncurses-6.0-accessors.patch dimstar@opensuse.org -- Fix build with NCurses 6.0 and OPAQUE_WINDOW set to 1
Patch35: python-ncurses-6.0-accessors.patch
Patch36: python-2.7.13-overflow_check.patch
Patch37: python-2.7.12-makeopcode.patch
# PATCH-FIX-UPSTREAM bmwiedemann@suse.de -- allow python packages to build reproducibly
Patch38: reproducible.patch
Patch39: 0001-2.7-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-3094.patch
# COMMON-PATCH-END
BuildRequires: automake
BuildRequires: db-devel
@ -214,10 +211,7 @@ that rely on earlier non-verification behavior.
%patch34 -p1
%endif
%patch35 -p1
%patch36 -p1
%patch37 -p1
%patch38 -p1
%patch39 -p1
# drop Autoconf version requirement
sed -i 's/^version_required/dnl version_required/' configure.ac