From be99b2f75a6450a1fb0dd9891351eafe669faeff Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Sat, 20 Feb 2021 21:09:33 -0500 Subject: [PATCH 1/2] python3: update to 3.9.2. --- ...cbe694743cee120457aa6626712f7799a932.patch | 186 ------------------ srcpkgs/python3/template | 8 +- 2 files changed, 4 insertions(+), 190 deletions(-) delete mode 100644 srcpkgs/python3/patches/c347cbe694743cee120457aa6626712f7799a932.patch diff --git a/srcpkgs/python3/patches/c347cbe694743cee120457aa6626712f7799a932.patch b/srcpkgs/python3/patches/c347cbe694743cee120457aa6626712f7799a932.patch deleted file mode 100644 index 59fd8ad5eb2..00000000000 --- a/srcpkgs/python3/patches/c347cbe694743cee120457aa6626712f7799a932.patch +++ /dev/null @@ -1,186 +0,0 @@ -From c347cbe694743cee120457aa6626712f7799a932 Mon Sep 17 00:00:00 2001 -From: "Miss Islington (bot)" - <31488909+miss-islington@users.noreply.github.com> -Date: Mon, 18 Jan 2021 13:29:31 -0800 -Subject: [PATCH] closes bpo-42938: Replace snprintf with Python unicode - formatting in ctypes param reprs. (GH-24247) - -(cherry picked from commit 916610ef90a0d0761f08747f7b0905541f0977c7) - -Co-authored-by: Benjamin Peterson - -Co-authored-by: Benjamin Peterson ---- - Lib/ctypes/test/test_parameters.py | 43 ++++++++++++++++ - .../2021-01-18-09-27-31.bpo-42938.4Zn4Mp.rst | 2 + - Modules/_ctypes/callproc.c | 51 +++++++------------ - 3 files changed, 64 insertions(+), 32 deletions(-) - create mode 100644 Misc/NEWS.d/next/Security/2021-01-18-09-27-31.bpo-42938.4Zn4Mp.rst - -diff --git a/Lib/ctypes/test/test_parameters.py b/Lib/ctypes/test/test_parameters.py -index e4c25fd880cef..531894fdec838 100644 ---- Lib/ctypes/test/test_parameters.py -+++ Lib/ctypes/test/test_parameters.py -@@ -201,6 +201,49 @@ def __dict__(self): - with self.assertRaises(ZeroDivisionError): - WorseStruct().__setstate__({}, b'foo') - -+ def test_parameter_repr(self): -+ from ctypes import ( -+ c_bool, -+ c_char, -+ c_wchar, -+ c_byte, -+ c_ubyte, -+ c_short, -+ c_ushort, -+ c_int, -+ c_uint, -+ c_long, -+ c_ulong, -+ c_longlong, -+ c_ulonglong, -+ c_float, -+ c_double, -+ c_longdouble, -+ c_char_p, -+ c_wchar_p, -+ c_void_p, -+ ) -+ self.assertRegex(repr(c_bool.from_param(True)), r"^$") -+ self.assertEqual(repr(c_char.from_param(97)), "") -+ self.assertRegex(repr(c_wchar.from_param('a')), r"^$") -+ self.assertEqual(repr(c_byte.from_param(98)), "") -+ self.assertEqual(repr(c_ubyte.from_param(98)), "") -+ self.assertEqual(repr(c_short.from_param(511)), "") -+ self.assertEqual(repr(c_ushort.from_param(511)), "") -+ self.assertRegex(repr(c_int.from_param(20000)), r"^$") -+ self.assertRegex(repr(c_uint.from_param(20000)), r"^$") -+ self.assertRegex(repr(c_long.from_param(20000)), r"^$") -+ self.assertRegex(repr(c_ulong.from_param(20000)), r"^$") -+ self.assertRegex(repr(c_longlong.from_param(20000)), r"^$") -+ self.assertRegex(repr(c_ulonglong.from_param(20000)), r"^$") -+ self.assertEqual(repr(c_float.from_param(1.5)), "") -+ self.assertEqual(repr(c_double.from_param(1.5)), "") -+ self.assertEqual(repr(c_double.from_param(1e300)), "") -+ self.assertRegex(repr(c_longdouble.from_param(1.5)), r"^$") -+ self.assertRegex(repr(c_char_p.from_param(b'hihi')), "^$") -+ self.assertRegex(repr(c_wchar_p.from_param('hihi')), "^$") -+ self.assertRegex(repr(c_void_p.from_param(0x12)), r"^$") -+ - ################################################################ - - if __name__ == '__main__': -diff --git a/Misc/NEWS.d/next/Security/2021-01-18-09-27-31.bpo-42938.4Zn4Mp.rst b/Misc/NEWS.d/next/Security/2021-01-18-09-27-31.bpo-42938.4Zn4Mp.rst -new file mode 100644 -index 0000000000000..7df65a156feab ---- /dev/null -+++ b/Misc/NEWS.d/next/Security/2021-01-18-09-27-31.bpo-42938.4Zn4Mp.rst -@@ -0,0 +1,2 @@ -+Avoid static buffers when computing the repr of :class:`ctypes.c_double` and -+:class:`ctypes.c_longdouble` values. -diff --git a/Modules/_ctypes/callproc.c b/Modules/_ctypes/callproc.c -index b0a36a30248f7..f2506de54498e 100644 ---- Modules/_ctypes/callproc.c -+++ Modules/_ctypes/callproc.c -@@ -489,58 +489,47 @@ is_literal_char(unsigned char c) - static PyObject * - PyCArg_repr(PyCArgObject *self) - { -- char buffer[256]; - switch(self->tag) { - case 'b': - case 'B': -- sprintf(buffer, "", -+ return PyUnicode_FromFormat("", - self->tag, self->value.b); -- break; - case 'h': - case 'H': -- sprintf(buffer, "", -+ return PyUnicode_FromFormat("", - self->tag, self->value.h); -- break; - case 'i': - case 'I': -- sprintf(buffer, "", -+ return PyUnicode_FromFormat("", - self->tag, self->value.i); -- break; - case 'l': - case 'L': -- sprintf(buffer, "", -+ return PyUnicode_FromFormat("", - self->tag, self->value.l); -- break; - - case 'q': - case 'Q': -- sprintf(buffer, --#ifdef MS_WIN32 -- "", --#else -- "", --#endif -+ return PyUnicode_FromFormat("", - self->tag, self->value.q); -- break; - case 'd': -- sprintf(buffer, "", -- self->tag, self->value.d); -- break; -- case 'f': -- sprintf(buffer, "", -- self->tag, self->value.f); -- break; -- -+ case 'f': { -+ PyObject *f = PyFloat_FromDouble((self->tag == 'f') ? self->value.f : self->value.d); -+ if (f == NULL) { -+ return NULL; -+ } -+ PyObject *result = PyUnicode_FromFormat("", self->tag, f); -+ Py_DECREF(f); -+ return result; -+ } - case 'c': - if (is_literal_char((unsigned char)self->value.c)) { -- sprintf(buffer, "", -+ return PyUnicode_FromFormat("", - self->tag, self->value.c); - } - else { -- sprintf(buffer, "", -+ return PyUnicode_FromFormat("", - self->tag, (unsigned char)self->value.c); - } -- break; - - /* Hm, are these 'z' and 'Z' codes useful at all? - Shouldn't they be replaced by the functionality of c_string -@@ -549,22 +538,20 @@ PyCArg_repr(PyCArgObject *self) - case 'z': - case 'Z': - case 'P': -- sprintf(buffer, "", -+ return PyUnicode_FromFormat("", - self->tag, self->value.p); - break; - - default: - if (is_literal_char((unsigned char)self->tag)) { -- sprintf(buffer, "", -+ return PyUnicode_FromFormat("", - (unsigned char)self->tag, (void *)self); - } - else { -- sprintf(buffer, "", -+ return PyUnicode_FromFormat("", - (unsigned char)self->tag, (void *)self); - } -- break; - } -- return PyUnicode_FromString(buffer); - } - - static PyMemberDef PyCArgType_members[] = { diff --git a/srcpkgs/python3/template b/srcpkgs/python3/template index 5f517d9f044..8ba2baee2b1 100644 --- a/srcpkgs/python3/template +++ b/srcpkgs/python3/template @@ -3,21 +3,21 @@ # THIS PKG MUST BE SYNCHRONIZED WITH "srcpkgs/python3-tkinter". # pkgname=python3 -version=3.9.1 -revision=2 +version=3.9.2 +revision=1 wrksrc="Python-${version}" pycompile_dirs="usr/lib/python${version%.*}" hostmakedepends="pkgconf" makedepends="libffi-devel readline-devel gdbm-devel libressl-devel expat-devel sqlite-devel bzip2-devel zlib-devel liblzma-devel" depends="ca-certificates" -checkdepends="$depends iana-etc" +checkdepends="$depends iana-etc tzdata" short_desc="Python programming language (${version%.*} series)" maintainer="Andrew J. Hesford " license="Python-2.0" homepage="https://www.python.org" distfiles="https://www.python.org/ftp/python/${version}/Python-${version}.tar.xz" -checksum=991c3f8ac97992f3d308fefeb03a64db462574eadbff34ce8bc5bb583d9903ff +checksum=3c2034c54f811448f516668dce09d24008a0716c3a794dd8639b5388cbde247d alternatives=" python:idle:/usr/bin/idle${version%.*} From 9fb3c9034498302666b1eeaca84998c8a9d69a56 Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Sat, 20 Feb 2021 21:09:36 -0500 Subject: [PATCH 2/2] python3-tkinter: update to 3.9.2. --- srcpkgs/python3-tkinter/template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/srcpkgs/python3-tkinter/template b/srcpkgs/python3-tkinter/template index 580463b906b..a7b4fa914b5 100644 --- a/srcpkgs/python3-tkinter/template +++ b/srcpkgs/python3-tkinter/template @@ -7,7 +7,7 @@ _desc="Python programming language" pkgname=python3-tkinter -version=3.9.1 +version=3.9.2 revision=1 wrksrc="Python-${version}" pycompile_dirs=" @@ -22,7 +22,7 @@ maintainer="Andrew J. Hesford " homepage="https://www.python.org" license="Python-2.0" distfiles="https://www.python.org/ftp/python/${version}/Python-${version}.tar.xz" -checksum=991c3f8ac97992f3d308fefeb03a64db462574eadbff34ce8bc5bb583d9903ff +checksum=3c2034c54f811448f516668dce09d24008a0716c3a794dd8639b5388cbde247d pre_configure() { # Ensure that internal copies of expat and libffi are not used.