diff --git a/PIL/SpiderImagePlugin.py b/PIL/SpiderImagePlugin.py index d5457893c..a59329497 100644 --- a/PIL/SpiderImagePlugin.py +++ b/PIL/SpiderImagePlugin.py @@ -173,7 +173,7 @@ class SpiderImageFile(ImageFile.ImageFile): def seek(self, frame): if self.istack == 0: - return + raise EOFError("attempt to seek in a non-stack file") if frame >= self._nimages: raise EOFError("attempt to seek past end of file") self.stkoffset = self.hdrlen + frame * (self.hdrlen + self.imgbytes) diff --git a/Tests/test_file_spider.py b/Tests/test_file_spider.py index 53cf3915b..956063167 100644 --- a/Tests/test_file_spider.py +++ b/Tests/test_file_spider.py @@ -1,6 +1,7 @@ from helper import unittest, PillowTestCase, hopper from PIL import Image +from PIL import ImageSequence from PIL import SpiderImagePlugin TEST_FILE = "Tests/images/hopper.spider" @@ -85,6 +86,17 @@ class TestImageSpider(PillowTestCase): self.assertRaises(IOError, lambda: Image.open(invalid_file)) + def test_nonstack_file(self): + im = Image.open(TEST_FILE) + + self.assertRaises(EOFError, lambda: im.seek(0)) + + def test_nonstack_dos(self): + im = Image.open(TEST_FILE) + for i, frame in enumerate(ImageSequence.Iterator(im)): + if i > 1: + self.fail("Non-stack DOS file test failed") + if __name__ == '__main__': unittest.main()