From 66e86f325fb01a3061ebded1995e614a5e8fe475 Mon Sep 17 00:00:00 2001 From: hugovk Date: Thu, 2 Apr 2015 08:29:18 +0300 Subject: [PATCH] Catch struct.error on invalid JPEG (#1163) --- PIL/Image.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/PIL/Image.py b/PIL/Image.py index 58944f891..7cfa72e6f 100644 --- a/PIL/Image.py +++ b/PIL/Image.py @@ -110,6 +110,7 @@ from PIL._util import deferred_error import os import sys import io +import struct # type stuff import collections @@ -601,7 +602,7 @@ class Image: def _repr_png_(self): """ iPython display hook support - + :returns: png version of the image as bytes """ from io import BytesIO @@ -893,12 +894,11 @@ class Image: if isinstance(t, bytes): self.im.putpalettealphas(t) elif isinstance(t, int): - self.im.putpalettealpha(t,0) + self.im.putpalettealpha(t, 0) else: raise ValueError("Transparency for P mode should" + " be bytes or int") - if mode == "P" and palette == ADAPTIVE: im = self.im.quantize(colors) new = self._new(im) @@ -1546,7 +1546,7 @@ class Image: self.load() - size=tuple(size) + size = tuple(size) if self.size == size: return self._new(self.im) @@ -2266,7 +2266,7 @@ def open(fp, mode="r"): im = factory(fp, filename) _decompression_bomb_check(im.size) return im - except (SyntaxError, IndexError, TypeError): + except (SyntaxError, IndexError, TypeError, struct.error): # import traceback # traceback.print_exc() pass @@ -2281,7 +2281,7 @@ def open(fp, mode="r"): im = factory(fp, filename) _decompression_bomb_check(im.size) return im - except (SyntaxError, IndexError, TypeError): + except (SyntaxError, IndexError, TypeError, struct.error): # import traceback # traceback.print_exc() pass