[packages/python3] - up to 3.7.2
arekm
arekm at pld-linux.org
Thu Jan 3 09:44:39 CET 2019
commit 9b97d583555fc923d1f719358fec128ac1bf787a
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date: Thu Jan 3 09:44:32 2019 +0100
- up to 3.7.2
git.patch | 613 ------------------------------------
python3-no_cmdline_tests.patch | 7 +-
python3-tests_with_pythonpath.patch | 6 +-
python3.spec | 9 +-
4 files changed, 10 insertions(+), 625 deletions(-)
---
diff --git a/python3.spec b/python3.spec
index c970c58..31522f3 100644
--- a/python3.spec
+++ b/python3.spec
@@ -41,13 +41,13 @@ Summary(ru.UTF-8): Язык программирования очень высо
Summary(tr.UTF-8): X arayüzlü, yüksek düzeyli, kabuk yorumlayıcı dili
Summary(uk.UTF-8): Мова програмування дуже високого рівня з X-інтерфейсом
Name: python3
-Version: %{py_ver}.1
-Release: 3
+Version: %{py_ver}.2
+Release: 1
Epoch: 1
License: PSF
Group: Development/Languages/Python
Source0: https://www.python.org/ftp/python/%{version}/Python-%{version}.tar.xz
-# Source0-md5: 0a57e9022c07fad3dadb2eef58568edb
+# Source0-md5: df6ec36011808205beda239c72f947cb
Source1: pyconfig.h.in
Patch0: %{name}-pythonpath.patch
Patch1: %{name}-ac_fixes.patch
@@ -63,7 +63,6 @@ Patch11: %{name}-installcompile.patch
# https://bugs.python.org/file21896/nonexistent_user.patch
Patch12: nonexistent_user.patch
Patch13: %{name}-no-randomize-tests.patch
-Patch14: git.patch
URL: https://www.python.org/
BuildRequires: autoconf >= 2.65
BuildRequires: automake
@@ -495,7 +494,6 @@ Moduły testowe dla Pythona.
%patch11 -p1
%patch12 -p1
%patch13 -p1
-%patch14 -p1
%{__rm} -r Modules/expat
@@ -1272,6 +1270,7 @@ rm -rf $RPM_BUILD_ROOT
%attr(755,root,root) %{_libdir}/libpython3.so
%{py_incdir}/*.h
%exclude %{py_incdir}/pyconfig.h
+%{py_incdir}/internal
%attr(755,root,root) %{py_libdir}/config-%{py_platform}/makesetup
%attr(755,root,root) %{py_libdir}/config-%{py_platform}/install-sh
%{py_libdir}/config-%{py_platform}/config.c
diff --git a/git.patch b/git.patch
deleted file mode 100644
index c537275..0000000
--- a/git.patch
+++ /dev/null
@@ -1,613 +0,0 @@
-commit 4ec9f64e07c8f397ad6699f8b99843846c219588
-Author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
-Date: Fri Oct 19 16:14:42 2018 -0700
-
- bpo-34824: Fix a possible NULL pointer dereference in _ssl.c (GH-9606) (GH-9743)
-
- On failure, _PyBytes_Resize() will deallocate the bytes object and set
- "result" to NULL.
-
- https://bugs.python.org/issue34824
- (cherry picked from commit 365ad2ead5bbaf7a3b18648ffa36e819559d3f75)
-
- Co-authored-by: Zackery Spytz <zspytz at gmail.com>
-
-diff --git a/Misc/NEWS.d/next/Core and Builtins/2018-09-27-11-10-02.bpo-34824.VLlCaU.rst b/Misc/NEWS.d/next/Core and Builtins/2018-09-27-11-10-02.bpo-34824.VLlCaU.rst
-new file mode 100644
-index 0000000000..fe95b8973c
---- /dev/null
-+++ b/Misc/NEWS.d/next/Core and Builtins/2018-09-27-11-10-02.bpo-34824.VLlCaU.rst
-@@ -0,0 +1,2 @@
-+Fix a possible null pointer dereference in Modules/_ssl.c. Patch by Zackery
-+Spytz.
-diff --git a/Modules/_ssl.c b/Modules/_ssl.c
-index 4253e2a772..f9d1b8c308 100644
---- a/Modules/_ssl.c
-+++ b/Modules/_ssl.c
-@@ -4711,12 +4711,17 @@ _ssl_MemoryBIO_read_impl(PySSLMemoryBIO *self, int len)
- return result;
-
- nbytes = BIO_read(self->bio, PyBytes_AS_STRING(result), len);
-- /* There should never be any short reads but check anyway. */
-- if ((nbytes < len) && (_PyBytes_Resize(&result, len) < 0)) {
-+ if (nbytes < 0) {
- Py_DECREF(result);
-+ _setSSLError(NULL, 0, __FILE__, __LINE__);
- return NULL;
- }
-
-+ /* There should never be any short reads but check anyway. */
-+ if (nbytes < len) {
-+ _PyBytes_Resize(&result, nbytes);
-+ }
-+
- return result;
- }
-
-commit 7f34d550231e047c88a1817b58bda03a33817490
-Author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
-Date: Sun Oct 21 05:55:52 2018 -0700
-
- bpo-34973: Fix crash in bytes constructor. (GH-9841)
-
-
- Constructing bytes from mutating list could cause a crash.
- (cherry picked from commit 914f9a078f997e58cfcfabcbb30fafdd1f277bef)
-
- Co-authored-by: Serhiy Storchaka <storchaka at gmail.com>
-
-diff --git a/Lib/test/test_bytes.py b/Lib/test/test_bytes.py
-index b9c5b628c4..145411efbb 100644
---- a/Lib/test/test_bytes.py
-+++ b/Lib/test/test_bytes.py
-@@ -113,6 +113,23 @@ class BaseBytesTest:
- b = self.type2test([1, 2, 3])
- self.assertEqual(b, b"\x01\x02\x03")
-
-+ def test_from_mutating_list(self):
-+ # Issue #34973: Crash in bytes constructor with mutating list.
-+ class X:
-+ def __index__(self):
-+ a.clear()
-+ return 42
-+ a = [X(), X()]
-+ self.assertEqual(bytes(a), b'*')
-+
-+ class Y:
-+ def __index__(self):
-+ if len(a) < 1000:
-+ a.append(self)
-+ return 42
-+ a = [Y()]
-+ self.assertEqual(bytes(a), b'*' * 1000) # should not crash
-+
- def test_from_index(self):
- b = self.type2test([Indexable(), Indexable(1), Indexable(254),
- Indexable(255)])
-diff --git a/Misc/NEWS.d/next/Core and Builtins/2018-10-13-16-42-03.bpo-34973.B5M-3g.rst b/Misc/NEWS.d/next/Core and Builtins/2018-10-13-16-42-03.bpo-34973.B5M-3g.rst
-new file mode 100644
-index 0000000000..6e403cd4ce
---- /dev/null
-+++ b/Misc/NEWS.d/next/Core and Builtins/2018-10-13-16-42-03.bpo-34973.B5M-3g.rst
-@@ -0,0 +1,2 @@
-+Fixed crash in :func:`bytes` when the :class:`list` argument is mutated
-+while it is iterated.
-diff --git a/Objects/bytesobject.c b/Objects/bytesobject.c
-index 5b62842093..711faba645 100644
---- a/Objects/bytesobject.c
-+++ b/Objects/bytesobject.c
-@@ -2640,49 +2640,83 @@ fail:
- return NULL;
- }
-
--#define _PyBytes_FROM_LIST_BODY(x, GET_ITEM) \
-- do { \
-- PyObject *bytes; \
-- Py_ssize_t i; \
-- Py_ssize_t value; \
-- char *str; \
-- PyObject *item; \
-- \
-- bytes = PyBytes_FromStringAndSize(NULL, Py_SIZE(x)); \
-- if (bytes == NULL) \
-- return NULL; \
-- str = ((PyBytesObject *)bytes)->ob_sval; \
-- \
-- for (i = 0; i < Py_SIZE(x); i++) { \
-- item = GET_ITEM((x), i); \
-- value = PyNumber_AsSsize_t(item, NULL); \
-- if (value == -1 && PyErr_Occurred()) \
-- goto error; \
-- \
-- if (value < 0 || value >= 256) { \
-- PyErr_SetString(PyExc_ValueError, \
-- "bytes must be in range(0, 256)"); \
-- goto error; \
-- } \
-- *str++ = (char) value; \
-- } \
-- return bytes; \
-- \
-- error: \
-- Py_DECREF(bytes); \
-- return NULL; \
-- } while (0)
--
- static PyObject*
- _PyBytes_FromList(PyObject *x)
- {
-- _PyBytes_FROM_LIST_BODY(x, PyList_GET_ITEM);
-+ Py_ssize_t i, size = PyList_GET_SIZE(x);
-+ Py_ssize_t value;
-+ char *str;
-+ PyObject *item;
-+ _PyBytesWriter writer;
-+
-+ _PyBytesWriter_Init(&writer);
-+ str = _PyBytesWriter_Alloc(&writer, size);
-+ if (str == NULL)
-+ return NULL;
-+ writer.overallocate = 1;
-+ size = writer.allocated;
-+
-+ for (i = 0; i < PyList_GET_SIZE(x); i++) {
-+ item = PyList_GET_ITEM(x, i);
-+ Py_INCREF(item);
-+ value = PyNumber_AsSsize_t(item, NULL);
-+ Py_DECREF(item);
-+ if (value == -1 && PyErr_Occurred())
-+ goto error;
-+
-+ if (value < 0 || value >= 256) {
-+ PyErr_SetString(PyExc_ValueError,
-+ "bytes must be in range(0, 256)");
-+ goto error;
-+ }
-+
-+ if (i >= size) {
-+ str = _PyBytesWriter_Resize(&writer, str, size+1);
-+ if (str == NULL)
-+ return NULL;
-+ size = writer.allocated;
-+ }
-+ *str++ = (char) value;
-+ }
-+ return _PyBytesWriter_Finish(&writer, str);
-+
-+ error:
-+ _PyBytesWriter_Dealloc(&writer);
-+ return NULL;
- }
-
- static PyObject*
- _PyBytes_FromTuple(PyObject *x)
- {
-- _PyBytes_FROM_LIST_BODY(x, PyTuple_GET_ITEM);
-+ PyObject *bytes;
-+ Py_ssize_t i, size = PyTuple_GET_SIZE(x);
-+ Py_ssize_t value;
-+ char *str;
-+ PyObject *item;
-+
-+ bytes = PyBytes_FromStringAndSize(NULL, size);
-+ if (bytes == NULL)
-+ return NULL;
-+ str = ((PyBytesObject *)bytes)->ob_sval;
-+
-+ for (i = 0; i < size; i++) {
-+ item = PyTuple_GET_ITEM(x, i);
-+ value = PyNumber_AsSsize_t(item, NULL);
-+ if (value == -1 && PyErr_Occurred())
-+ goto error;
-+
-+ if (value < 0 || value >= 256) {
-+ PyErr_SetString(PyExc_ValueError,
-+ "bytes must be in range(0, 256)");
-+ goto error;
-+ }
-+ *str++ = (char) value;
-+ }
-+ return bytes;
-+
-+ error:
-+ Py_DECREF(bytes);
-+ return NULL;
- }
-
- static PyObject *
-commit c46f0423a42c46cf62d12c300ec36a848f8ba72c
-Author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
-Date: Tue Oct 23 12:45:44 2018 -0700
-
- Fix error handling bugs in _elementtree.c. (GH-10060)
-
-
- References could leak, NULL could be dereferenced, and the Expat parser could
- be double freed when some errors raised.
- (cherry picked from commit 9f3ed3e213b30059087d059a7d1d3b2527fa8654)
-
- Co-authored-by: Zackery Spytz <zspytz at gmail.com>
-
-diff --git a/Modules/_elementtree.c b/Modules/_elementtree.c
-index d13c6dd4db..3118b55c87 100644
---- a/Modules/_elementtree.c
-+++ b/Modules/_elementtree.c
-@@ -336,6 +336,9 @@ static PyObject*
- get_attrib_from_keywords(PyObject *kwds)
- {
- PyObject *attrib_str = PyUnicode_FromString("attrib");
-+ if (attrib_str == NULL) {
-+ return NULL;
-+ }
- PyObject *attrib = PyDict_GetItem(kwds, attrib_str);
-
- if (attrib) {
-@@ -356,10 +359,10 @@ get_attrib_from_keywords(PyObject *kwds)
-
- Py_DECREF(attrib_str);
-
-- /* attrib can be NULL if PyDict_New failed */
-- if (attrib)
-- if (PyDict_Update(attrib, kwds) < 0)
-- return NULL;
-+ if (attrib != NULL && PyDict_Update(attrib, kwds) < 0) {
-+ Py_DECREF(attrib);
-+ return NULL;
-+ }
- return attrib;
- }
-
-@@ -579,10 +582,9 @@ subelement(PyObject *self, PyObject *args, PyObject *kwds)
- attrib = PyDict_Copy(attrib);
- if (!attrib)
- return NULL;
-- if (kwds) {
-- if (PyDict_Update(attrib, kwds) < 0) {
-- return NULL;
-- }
-+ if (kwds != NULL && PyDict_Update(attrib, kwds) < 0) {
-+ Py_DECREF(attrib);
-+ return NULL;
- }
- } else if (kwds) {
- /* have keyword args */
-@@ -1857,7 +1859,6 @@ element_ass_subscr(PyObject* self_, PyObject* item, PyObject* value)
- * scheduled for removal.
- */
- if (!(recycle = PyList_New(slicelen))) {
-- PyErr_NoMemory();
- return -1;
- }
-
-@@ -1897,7 +1898,7 @@ element_ass_subscr(PyObject* self_, PyObject* item, PyObject* value)
- self->extra->length -= slicelen;
-
- /* Discard the recycle list with all the deleted sub-elements */
-- Py_XDECREF(recycle);
-+ Py_DECREF(recycle);
- return 0;
- }
-
-@@ -3352,7 +3353,6 @@ _elementtree_XMLParser___init___impl(XMLParserObject *self, PyObject *html,
- if (!target) {
- Py_CLEAR(self->entity);
- Py_CLEAR(self->names);
-- EXPAT(ParserFree)(self->parser);
- return -1;
- }
- }
-commit da15389fddb85cf8a97b81e75de7d77b5f505b56
-Author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
-Date: Wed Oct 31 02:31:29 2018 -0700
-
- Fix a possible crash in range.__reversed__(). (GH-10252)
-
- (cherry picked from commit c9a6168924ffa4f3f78175998b392fe23d3edc50)
-
- Co-authored-by: Zackery Spytz <zspytz at gmail.com>
-
-diff --git a/Objects/rangeobject.c b/Objects/rangeobject.c
-index e4f778b1f8..037be870e3 100644
---- a/Objects/rangeobject.c
-+++ b/Objects/rangeobject.c
-@@ -1154,6 +1154,7 @@ long_range:
- it = PyObject_New(longrangeiterobject, &PyLongRangeIter_Type);
- if (it == NULL)
- return NULL;
-+ it->index = it->start = it->step = NULL;
-
- /* start + (len - 1) * step */
- it->len = range->length;
-commit 192c54713b4c67a8d14b2d98056771feba40ca37
-Author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
-Date: Wed Oct 31 16:45:42 2018 -0700
-
- bpo-26558: Fix Py_FatalError() with GIL released (GH-10267)
-
-
- Don't call _Py_FatalError_PrintExc() nor flush_std_files() if the
- current thread doesn't hold the GIL, or if the current thread
- has no Python state thread.
- (cherry picked from commit 3a228ab17c2a9cffd1a2f15f30d6209768de20a6)
-
- Co-authored-by: Victor Stinner <vstinner at redhat.com>
-
-diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
-index c01b21ffeb..86f95de833 100644
---- a/Python/pylifecycle.c
-+++ b/Python/pylifecycle.c
-@@ -2015,12 +2015,6 @@ _Py_FatalError_PrintExc(int fd)
- PyObject *exception, *v, *tb;
- int has_tb;
-
-- if (PyThreadState_GET() == NULL) {
-- /* The GIL is released: trying to acquire it is likely to deadlock,
-- just give up. */
-- return 0;
-- }
--
- PyErr_Fetch(&exception, &v, &tb);
- if (exception == NULL) {
- /* No current exception */
-@@ -2125,9 +2119,30 @@ fatal_error(const char *prefix, const char *msg, int status)
- fputs("\n", stderr);
- fflush(stderr); /* it helps in Windows debug build */
-
-- /* Print the exception (if an exception is set) with its traceback,
-- * or display the current Python stack. */
-- if (!_Py_FatalError_PrintExc(fd)) {
-+ /* Check if the current thread has a Python thread state
-+ and holds the GIL */
-+ PyThreadState *tss_tstate = PyGILState_GetThisThreadState();
-+ if (tss_tstate != NULL) {
-+ PyThreadState *tstate = PyThreadState_GET();
-+ if (tss_tstate != tstate) {
-+ /* The Python thread does not hold the GIL */
-+ tss_tstate = NULL;
-+ }
-+ }
-+ else {
-+ /* Py_FatalError() has been called from a C thread
-+ which has no Python thread state. */
-+ }
-+ int has_tstate_and_gil = (tss_tstate != NULL);
-+
-+ if (has_tstate_and_gil) {
-+ /* If an exception is set, print the exception with its traceback */
-+ if (!_Py_FatalError_PrintExc(fd)) {
-+ /* No exception is set, or an exception is set without traceback */
-+ _Py_FatalError_DumpTracebacks(fd);
-+ }
-+ }
-+ else {
- _Py_FatalError_DumpTracebacks(fd);
- }
-
-@@ -2138,7 +2153,7 @@ fatal_error(const char *prefix, const char *msg, int status)
- _PyFaulthandler_Fini();
-
- /* Check if the current Python thread hold the GIL */
-- if (PyThreadState_GET() != NULL) {
-+ if (has_tstate_and_gil) {
- /* Flush sys.stdout and sys.stderr */
- flush_std_files();
- }
-commit f16ebcd460aaeb8d6b31db317d22f5ed68afbcc8
-Author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
-Date: Thu Nov 8 18:13:14 2018 -0800
-
- bpo-35193: Fix an off by one error in the RETURN_VALUE case. (GH-10418)
-
-
- Fix an off by one error in the peephole optimizer when checking for unreachable code beyond a return.
-
- Do a bounds check within find_op so it can return before going past the end as a safety measure.
-
- https://github.com/python/cpython/commit/7db3c488335168993689ddae5914a28e16188447GH-diff-a33329ae6ae0bb295d742f0caf93c137
- introduced this off by one error while fixing another one nearby.
-
- This bug was shipped in all Python 3.6 and 3.7 releases.
-
- The included unittest won't fail unless you do a clang msan build.
- (cherry picked from commit 49fa4a9f1ef387e16596f271414c855339eadf09)
-
- Co-authored-by: Gregory P. Smith <greg at krypto.org>
-
-diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py
-index d8a57e5e09..5ac1c5f271 100644
---- a/Lib/test/test_compile.py
-+++ b/Lib/test/test_compile.py
-@@ -1,3 +1,4 @@
-+import dis
- import math
- import os
- import unittest
-@@ -621,6 +622,24 @@ if 1:
- self.check_constant(f1, frozenset({0}))
- self.assertTrue(f1(0))
-
-+ # This is a regression test for a CPython specific peephole optimizer
-+ # implementation bug present in a few releases. It's assertion verifies
-+ # that peephole optimization was actually done though that isn't an
-+ # indication of the bugs presence or not (crashing is).
-+ @support.cpython_only
-+ def test_peephole_opt_unreachable_code_array_access_in_bounds(self):
-+ """Regression test for issue35193 when run under clang msan."""
-+ def unused_code_at_end():
-+ return 3
-+ raise RuntimeError("unreachable")
-+ # The above function definition will trigger the out of bounds
-+ # bug in the peephole optimizer as it scans opcodes past the
-+ # RETURN_VALUE opcode. This does not always crash an interpreter.
-+ # When you build with the clang memory sanitizer it reliably aborts.
-+ self.assertEqual(
-+ 'RETURN_VALUE',
-+ list(dis.get_instructions(unused_code_at_end))[-1].opname)
-+
- def test_dont_merge_constants(self):
- # Issue #25843: compile() must not merge constants which are equal
- # but have a different type.
-diff --git a/Misc/NEWS.d/next/Core and Builtins/2018-11-08-15-00-58.bpo-35193.HzPS6R.rst b/Misc/NEWS.d/next/Core and Builtins/2018-11-08-15-00-58.bpo-35193.HzPS6R.rst
-new file mode 100644
-index 0000000000..dddebe1670
---- /dev/null
-+++ b/Misc/NEWS.d/next/Core and Builtins/2018-11-08-15-00-58.bpo-35193.HzPS6R.rst
-@@ -0,0 +1,3 @@
-+Fix an off by one error in the bytecode peephole optimizer where it could read
-+bytes beyond the end of bounds of an array when removing unreachable code.
-+This bug was present in every release of Python 3.6 and 3.7 until now.
-diff --git a/Python/peephole.c b/Python/peephole.c
-index 76a0edbcc2..a3b078fdf1 100644
---- a/Python/peephole.c
-+++ b/Python/peephole.c
-@@ -50,9 +50,9 @@ lastn_const_start(const _Py_CODEUNIT *codestr, Py_ssize_t i, Py_ssize_t n)
-
- /* Scans through EXTENDED ARGs, seeking the index of the effective opcode */
- static Py_ssize_t
--find_op(const _Py_CODEUNIT *codestr, Py_ssize_t i)
-+find_op(const _Py_CODEUNIT *codestr, Py_ssize_t codelen, Py_ssize_t i)
- {
-- while (_Py_OPCODE(codestr[i]) == EXTENDED_ARG) {
-+ while (i < codelen && _Py_OPCODE(codestr[i]) == EXTENDED_ARG) {
- i++;
- }
- return i;
-@@ -128,8 +128,9 @@ copy_op_arg(_Py_CODEUNIT *codestr, Py_ssize_t i, unsigned char op,
- Called with codestr pointing to the first LOAD_CONST.
- */
- static Py_ssize_t
--fold_tuple_on_constants(_Py_CODEUNIT *codestr, Py_ssize_t c_start,
-- Py_ssize_t opcode_end, PyObject *consts, int n)
-+fold_tuple_on_constants(_Py_CODEUNIT *codestr, Py_ssize_t codelen,
-+ Py_ssize_t c_start, Py_ssize_t opcode_end,
-+ PyObject *consts, int n)
- {
- /* Pre-conditions */
- assert(PyList_CheckExact(consts));
-@@ -142,7 +143,7 @@ fold_tuple_on_constants(_Py_CODEUNIT *codestr, Py_ssize_t c_start,
-
- for (Py_ssize_t i = 0, pos = c_start; i < n; i++, pos++) {
- assert(pos < opcode_end);
-- pos = find_op(codestr, pos);
-+ pos = find_op(codestr, codelen, pos);
- assert(_Py_OPCODE(codestr[pos]) == LOAD_CONST);
-
- unsigned int arg = get_arg(codestr, pos);
-@@ -267,7 +268,7 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
- goto exitError;
- assert(PyList_Check(consts));
-
-- for (i=find_op(codestr, 0) ; i<codelen ; i=nexti) {
-+ for (i=find_op(codestr, codelen, 0) ; i<codelen ; i=nexti) {
- opcode = _Py_OPCODE(codestr[i]);
- op_start = i;
- while (op_start >= 1 && _Py_OPCODE(codestr[op_start-1]) == EXTENDED_ARG) {
-@@ -305,7 +306,8 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
- if (j > 0 && lastlc >= j) {
- h = lastn_const_start(codestr, op_start, j);
- if (ISBASICBLOCK(blocks, h, op_start)) {
-- h = fold_tuple_on_constants(codestr, h, i+1, consts, j);
-+ h = fold_tuple_on_constants(codestr, codelen,
-+ h, i+1, consts, j);
- break;
- }
- }
-@@ -342,7 +344,7 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
- case JUMP_IF_FALSE_OR_POP:
- case JUMP_IF_TRUE_OR_POP:
- h = get_arg(codestr, i) / sizeof(_Py_CODEUNIT);
-- tgt = find_op(codestr, h);
-+ tgt = find_op(codestr, codelen, h);
-
- j = _Py_OPCODE(codestr[tgt]);
- if (CONDITIONAL_JUMP(j)) {
-@@ -383,7 +385,7 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
- case SETUP_WITH:
- case SETUP_ASYNC_WITH:
- h = GETJUMPTGT(codestr, i);
-- tgt = find_op(codestr, h);
-+ tgt = find_op(codestr, codelen, h);
- /* Replace JUMP_* to a RETURN into just a RETURN */
- if (UNCONDITIONAL_JUMP(opcode) &&
- _Py_OPCODE(codestr[tgt]) == RETURN_VALUE) {
-@@ -412,7 +414,7 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
- }
- if (h > i + 1) {
- fill_nops(codestr, i + 1, h);
-- nexti = find_op(codestr, h);
-+ nexti = find_op(codestr, codelen, h);
- }
- break;
- }
-commit 9fbcb1402efab4e287f25145a69ba14c9c6dbce9
-Author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
-Date: Tue Nov 13 16:39:36 2018 -0800
-
- [3.7] bpo-35214: Fix OOB memory access in unicode escape parser (GH-10506) (GH-10522)
-
-
-
- Discovered using clang's MemorySanitizer when it ran python3's
- test_fstring test_misformed_unicode_character_name.
-
- An msan build will fail by simply executing: ./python -c 'u"\N"'
- (cherry picked from commit 746b2d35ea47005054ed774fecaed64fab803d7d)
-
-
- Co-authored-by: Gregory P. Smith <greg at krypto.org>
-
-
- https://bugs.python.org/issue35214
-
-diff --git a/Misc/NEWS.d/next/Core and Builtins/2018-11-13-00-40-35.bpo-35214.OQBjph.rst b/Misc/NEWS.d/next/Core and Builtins/2018-11-13-00-40-35.bpo-35214.OQBjph.rst
-new file mode 100644
-index 0000000000..d462c97d80
---- /dev/null
-+++ b/Misc/NEWS.d/next/Core and Builtins/2018-11-13-00-40-35.bpo-35214.OQBjph.rst
-@@ -0,0 +1,3 @@
-+Fixed an out of bounds memory access when parsing a truncated unicode
-+escape sequence at the end of a string such as ``'\N'``. It would read
-+one byte beyond the end of the memory allocation.
-diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
-index fe833a76ea..71eb654095 100644
---- a/Objects/unicodeobject.c
-+++ b/Objects/unicodeobject.c
-@@ -6042,7 +6042,7 @@ _PyUnicode_DecodeUnicodeEscape(const char *s,
- }
-
- message = "malformed \\N character escape";
-- if (*s == '{') {
-+ if (s < end && *s == '{') {
- const char *start = ++s;
- size_t namelen;
- /* look for the closing brace */
-commit b5ea5e57f5dd23e1db695dda8bf3f6142ed9074f
-Author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
-Date: Thu Nov 15 01:25:34 2018 -0800
-
- Fix a possible reference leak in _socket.getaddrinfo(). (GH-10543)
-
-
- "single" needs to be decrefed if PyList_Append() fails.
- (cherry picked from commit 4c596d54aa6a55e9d2a3db78891e656ebbfb63c8)
-
- Co-authored-by: Zackery Spytz <zspytz at gmail.com>
-
-diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
-index eeade2ecad..ddb1c4364b 100644
---- a/Modules/socketmodule.c
-+++ b/Modules/socketmodule.c
-@@ -6269,9 +6269,11 @@ socket_getaddrinfo(PyObject *self, PyObject *args, PyObject* kwargs)
- if (single == NULL)
- goto err;
-
-- if (PyList_Append(all, single))
-+ if (PyList_Append(all, single)) {
-+ Py_DECREF(single);
- goto err;
-- Py_XDECREF(single);
-+ }
-+ Py_DECREF(single);
- }
- Py_XDECREF(idna);
- if (res0)
diff --git a/python3-no_cmdline_tests.patch b/python3-no_cmdline_tests.patch
index ad85bff..392c63a 100644
--- a/python3-no_cmdline_tests.patch
+++ b/python3-no_cmdline_tests.patch
@@ -1,13 +1,12 @@
diff -Nur Python-3.3.1.orig/Lib/test/test_compileall.py Python-3.3.1/Lib/test/test_compileall.py
--- Python-3.3.1.orig/Lib/test/test_compileall.py 2013-04-06 08:41:41.000000000 +0100
+++ Python-3.3.1/Lib/test/test_compileall.py 2013-04-07 19:39:23.449157629 +0100
-@@ -130,7 +130,7 @@
- finally:
+@@ -233,6 +233,7 @@ class EncodingTest(unittest.TestCase):
sys.stdout = orig_stdout
--
+
+ at unittest.skipUnless(support.is_resource_enabled("cmdline"), "python cmdline tests disabled")
- class CommandLineTests(unittest.TestCase):
+ class CommandLineTestsBase:
"""Test compileall's CLI."""
diff -Nur Python-3.3.1.orig/Lib/test/test_warnings/__init__.py Python-3.3.1/Lib/test/test_warnings/__init__.py
diff --git a/python3-tests_with_pythonpath.patch b/python3-tests_with_pythonpath.patch
index d2bc777..ef74c4d 100644
--- a/python3-tests_with_pythonpath.patch
+++ b/python3-tests_with_pythonpath.patch
@@ -49,14 +49,14 @@ diff -dur -x '*~' Python-3.5.0.orig/Lib/test/test_compileall.py Python-3.5.0/Lib
def test_no_args_compiles_path(self):
# Note that -l is implied for the no args case.
bazfn = script_helper.make_script(self.directory, 'baz', '')
-@@ -214,6 +215,7 @@
+@@ -220,6 +220,7 @@ class CommandLineTestsBase:
self.assertNotCompiled(self.initfn)
self.assertNotCompiled(self.barfn)
+ @unittest.skipIf("PYTHONPATH" in os.environ, "$PYTHONPATH set")
+ @without_source_date_epoch # timestamp invalidation test
def test_no_args_respects_force_flag(self):
- bazfn = script_helper.make_script(self.directory, 'baz', '')
- self.assertRunOK(PYTHONPATH=self.directory)
+ self._skip_if_sys_path_not_writable()
@@ -230,6 +232,7 @@
mtime2 = os.stat(pycpath).st_mtime
self.assertNotEqual(mtime, mtime2)
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/python3.git/commitdiff/9b97d583555fc923d1f719358fec128ac1bf787a
More information about the pld-cvs-commit
mailing list