Control: reassign -1 src:pillow Control: tags -1 patch Control: forwarded -1 https://github.com/python-pillow/Pillow/issues/1902
On Sun, 11 Dec 2016 16:21:12 -0700 Ben Hildred <426...@gmail.com> wrote: > Package: pysolfc > Version: 2.0-4 > Severity: grave > Justification: renders package unusable > > $ pysolfc > Traceback (most recent call last): > File "/usr/games/pysolfc", line 32, in <module> > sys.exit(main(sys.argv)) > File "/usr/share/games/pysolfc/pysollib/main.py", line 359, in main > r = pysol_init(app, args) > File "/usr/share/games/pysolfc/pysollib/main.py", line 196, in pysol_init > app.loadImages1() > File "/usr/share/games/pysolfc/pysollib/app.py", line 712, in loadImages1 > im = loadImage(fn) > File "/usr/share/games/pysolfc/pysollib/tile/tkutil.py", line 276, in > makeImage > im = PIL_Image(file) > File "/usr/share/games/pysolfc/pysollib/tile/tkutil.py", line 254, in > __init__ > ImageTk.PhotoImage.__init__(self, image) > File "/usr/lib/python2.7/dist-packages/PIL/ImageTk.py", line 120, in > __init__ > self.paste(image) > File "/usr/lib/python2.7/dist-packages/PIL/ImageTk.py", line 187, in paste > _imagingtk.tkinit(tk.interpaddr(), 1) > OverflowError: Python int too large to convert to C long Hello, I am reassigning #847812 to src:pillow because it is not a bug in pysolfc. The game is currently unplayable on 32 bit architectures thus the severity. The reason for the overflow error stems from the fact that the return value of tk.interpaddr() is too big to fit into a Py_ssize_t on 32 bit. A solution that works for me is to use PyLong_AsVoidPtr in _imagingtk.c instead. The patch was taken from matplotlib [1] which appears to borrow some code from pillow. The issue is also known upstream as bug #1902. Please note that pillow currently can't be compiled due to its python-olefile build-dependencies. I am attaching the debdiff to this bug report. Regards, Markus [1] https://github.com/matplotlib/matplotlib/commit/a91559b82cf23ee407cd57580653015fc7dc35f0
diff -Nru pillow-4.0.0/debian/changelog pillow-4.0.0/debian/changelog --- pillow-4.0.0/debian/changelog 2017-01-05 19:47:03.000000000 +0100 +++ pillow-4.0.0/debian/changelog 2017-01-09 10:11:41.000000000 +0100 @@ -1,3 +1,11 @@ +pillow (4.0.0-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Add imagingtk-int-overflow.patch. Fix integer overflow on 32 bit + architectures. + + -- Markus Koschany <a...@debian.org> Mon, 09 Jan 2017 10:11:41 +0100 + pillow (4.0.0-1) unstable; urgency=medium * Pillow 4.0.0 release. diff -Nru pillow-4.0.0/debian/control pillow-4.0.0/debian/control --- pillow-4.0.0/debian/control 2017-01-05 19:47:03.000000000 +0100 +++ pillow-4.0.0/debian/control 2017-01-09 10:11:41.000000000 +0100 @@ -10,7 +10,6 @@ python-tk, python-tk-dbg, python3-tk, python3-tk-dbg, python-nose, python3-nose, - python-olefile, python3-olefile, libfreetype6-dev, libjpeg-dev, zlib1g-dev, liblcms2-dev, libtiff5-dev | libtiff-dev, libwebp-dev Build-Conflicts: python-cffi, python3-cffi diff -Nru pillow-4.0.0/debian/patches/imagingtk-int-overflow.patch pillow-4.0.0/debian/patches/imagingtk-int-overflow.patch --- pillow-4.0.0/debian/patches/imagingtk-int-overflow.patch 1970-01-01 01:00:00.000000000 +0100 +++ pillow-4.0.0/debian/patches/imagingtk-int-overflow.patch 2017-01-09 10:11:41.000000000 +0100 @@ -0,0 +1,39 @@ +From: Markus Koschany <a...@debian.org> +Date: Mon, 9 Jan 2017 10:11:13 +0100 +Subject: imagingtk int overflow + +Fix integer overflow on 32 bit architectures. + +Forwarded: https://github.com/python-pillow/Pillow/issues/1902 +Origin: https://github.com/matplotlib/matplotlib/commit/a91559b82cf23ee407cd57580653015fc7dc35f0 +--- + _imagingtk.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/_imagingtk.c b/_imagingtk.c +index 87de36a..db16468 100644 +--- a/_imagingtk.c ++++ b/_imagingtk.c +@@ -36,18 +36,18 @@ _tkinit(PyObject* self, PyObject* args) + { + Tcl_Interp* interp; + +- Py_ssize_t arg; ++ PyObject *arg; + int is_interp; +- if (!PyArg_ParseTuple(args, "ni", &arg, &is_interp)) ++ if (!PyArg_ParseTuple(args, "Oi", &arg, &is_interp)) + return NULL; + + if (is_interp) +- interp = (Tcl_Interp*) arg; ++ interp = (Tcl_Interp*)PyLong_AsVoidPtr(arg); + else { + TkappObject* app; + /* Do it the hard way. This will break if the TkappObject + layout changes */ +- app = (TkappObject*) arg; ++ app = (TkappObject*)PyLong_AsVoidPtr(arg); + interp = app->interp; + } + diff -Nru pillow-4.0.0/debian/patches/series pillow-4.0.0/debian/patches/series --- pillow-4.0.0/debian/patches/series 2016-08-11 10:23:07.000000000 +0200 +++ pillow-4.0.0/debian/patches/series 2017-01-09 10:11:41.000000000 +0100 @@ -1,3 +1,4 @@ no-lib64-hack.diff toplevel-setup.py generate-webp-file +imagingtk-int-overflow.patch
signature.asc
Description: OpenPGP digital signature