Catch struct.error on invalid JPEG (#1163)

This commit is contained in:
hugovk 2015-04-02 08:29:18 +03:00
parent d754598f14
commit 66e86f325f

View File

@ -110,6 +110,7 @@ from PIL._util import deferred_error
import os import os
import sys import sys
import io import io
import struct
# type stuff # type stuff
import collections import collections
@ -898,7 +899,6 @@ class Image:
raise ValueError("Transparency for P mode should" + raise ValueError("Transparency for P mode should" +
" be bytes or int") " be bytes or int")
if mode == "P" and palette == ADAPTIVE: if mode == "P" and palette == ADAPTIVE:
im = self.im.quantize(colors) im = self.im.quantize(colors)
new = self._new(im) new = self._new(im)
@ -2266,7 +2266,7 @@ def open(fp, mode="r"):
im = factory(fp, filename) im = factory(fp, filename)
_decompression_bomb_check(im.size) _decompression_bomb_check(im.size)
return im return im
except (SyntaxError, IndexError, TypeError): except (SyntaxError, IndexError, TypeError, struct.error):
# import traceback # import traceback
# traceback.print_exc() # traceback.print_exc()
pass pass
@ -2281,7 +2281,7 @@ def open(fp, mode="r"):
im = factory(fp, filename) im = factory(fp, filename)
_decompression_bomb_check(im.size) _decompression_bomb_check(im.size)
return im return im
except (SyntaxError, IndexError, TypeError): except (SyntaxError, IndexError, TypeError, struct.error):
# import traceback # import traceback
# traceback.print_exc() # traceback.print_exc()
pass pass