Date: Sunday, September 15, 2013 @ 23:52:25 Author: kkeen Revision: 97264
upgpkg: python-pillow 2.1.0-5, fix FS#36945 Added: python-pillow/trunk/pull325.diff Modified: python-pillow/trunk/PKGBUILD --------------+ PKGBUILD | 10 +++++++--- pull325.diff | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 3 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2013-09-15 21:50:11 UTC (rev 97263) +++ PKGBUILD 2013-09-15 21:52:25 UTC (rev 97264) @@ -6,14 +6,17 @@ pkgname=(python-pillow python2-pillow) _appname=Pillow pkgver=2.1.0 -pkgrel=4 +pkgrel=5 pkgdesc="Python Imaging Library (PIL) fork. Python3 version." arch=('i686' 'x86_64') url="http://python-imaging.github.io/" license=('BSD') makedepends=('python-setuptools' 'python2-setuptools' 'lcms' 'libwebp' 'tk' 'sane') -source=("http://pypi.python.org/packages/source/P/$_appname/$_appname-$pkgver.zip") -md5sums=('ec630d8ae15d4a3c4ae7b7efdeac8200') +# remove pull325.diff on 2.1.1 release, fixes FS#36945 +source=("http://pypi.python.org/packages/source/P/$_appname/$_appname-$pkgver.zip" + "pull325.diff") +md5sums=('ec630d8ae15d4a3c4ae7b7efdeac8200' + 'aa3fa12bd2d61041f6d01fedddab39fb') build() { cd "$srcdir" @@ -49,6 +52,7 @@ conflicts=('python-imaging' 'python2-imaging') replaces=('python2-imaging') cd "$srcdir/${_appname}2-$pkgver" + patch -Np1 -i ../pull325.diff python2 setup.py install --root="$pkgdir/" --optimize=0 pushd Sane python2 setup.py install --root="$pkgdir/" --optimize=0 Added: pull325.diff =================================================================== --- pull325.diff (rev 0) +++ pull325.diff 2013-09-15 21:52:25 UTC (rev 97264) @@ -0,0 +1,38 @@ +diff --git a/PIL/Image.py b/PIL/Image.py +index bb15aaa..2e120e5 100644 +--- a/PIL/Image.py ++++ b/PIL/Image.py +@@ -706,7 +706,7 @@ def convert(self, mode=None, data=None, dither=None, + if self.mode == "L" and mode == "RGBA" and "transparency" in self.info: + from PIL import ImagePalette + self.mode = "P" +- bytePalette = bytes([i//3 for i in range(768)]) ++ bytePalette = bytes(bytearray([i//3 for i in range(768)])) + self.palette = ImagePalette.raw("RGB", bytePalette) + self.palette.dirty = 1 + self.load() +diff --git a/_imaging.c b/_imaging.c +index 9f48030..84f06e9 100644 +--- a/_imaging.c ++++ b/_imaging.c +@@ -287,6 +287,7 @@ int PyImaging_GetBuffer(PyObject* buffer, Py_buffer *view) + static const char* wrong_raw_mode = "unrecognized raw mode"; + static const char* outside_image = "image index out of range"; + static const char* outside_palette = "palette index out of range"; ++static const char* wrong_palette_size = "invalid palette size"; + static const char* no_palette = "image has no palette"; + static const char* readonly = "image is readonly"; + /* static const char* no_content = "image has no content"; */ +@@ -1413,6 +1414,11 @@ int PyImaging_GetBuffer(PyObject* buffer, Py_buffer *view) + return NULL; + } + ++ if ( palettesize * 8 / bits > 256) { ++ PyErr_SetString(PyExc_ValueError, wrong_palette_size); ++ return NULL; ++ } ++ + ImagingPaletteDelete(self->image->palette); + + strcpy(self->image->mode, "P"); +