diff --git a/src/PIL/EpsImagePlugin.py b/src/PIL/EpsImagePlugin.py index b96ce9603..195dde863 100644 --- a/src/PIL/EpsImagePlugin.py +++ b/src/PIL/EpsImagePlugin.py @@ -360,7 +360,7 @@ class EpsImageFile(ImageFile.ImageFile): check_required_header_comments() - if not self._size: + if not self.size: msg = "cannot determine EPS bounding box" raise OSError(msg) diff --git a/src/PIL/GifImagePlugin.py b/src/PIL/GifImagePlugin.py index 31d4b53b3..b3a7077b6 100644 --- a/src/PIL/GifImagePlugin.py +++ b/src/PIL/GifImagePlugin.py @@ -262,7 +262,7 @@ class GifImageFile(ImageFile.ImageFile): x1, y1 = x0 + i16(s, 4), y0 + i16(s, 6) if (x1 > self.size[0] or y1 > self.size[1]) and update_image: self._size = max(x1, self.size[0]), max(y1, self.size[1]) - Image._decompression_bomb_check(self._size) + Image._decompression_bomb_check(self.size) frame_dispose_extent = x0, y0, x1, y1 flags = s[8] diff --git a/src/PIL/Image.py b/src/PIL/Image.py index 7b45062fd..f09429875 100644 --- a/src/PIL/Image.py +++ b/src/PIL/Image.py @@ -508,38 +508,32 @@ class Image: @property def size(self): - return self._size - - @property - def _size(self): if self._use_im_values(): return self.im.size return self.__size - @_size.setter def _size(self, value): # set im.size first in case it raises an exception if self._use_im_values(): self.im.size = value self.__size = value - @property - def mode(self): - return self._mode + _size = property(fset=_size) @property - def _mode(self): + def mode(self): if self._use_im_values(): return self.im.mode return self.__mode - @_mode.setter def _mode(self, value): # set im.mode first in case it raises an exception if self._use_im_values(): self.im.mode = value self.__mode = value + _mode = property(fset=_mode) + def _new(self, im): new = Image() new.im = im diff --git a/src/PIL/ImageOps.py b/src/PIL/ImageOps.py index 17702778c..925618602 100644 --- a/src/PIL/ImageOps.py +++ b/src/PIL/ImageOps.py @@ -604,7 +604,7 @@ def exif_transpose(image, *, in_place=False): if in_place: image.im = transposed_image.im image.pyaccess = None - image._size = transposed_image._size + image._size = transposed_image.size exif_image = image if in_place else transposed_image exif = exif_image.getexif() diff --git a/src/PIL/PcxImagePlugin.py b/src/PIL/PcxImagePlugin.py index 854d9e83e..f4a636098 100644 --- a/src/PIL/PcxImagePlugin.py +++ b/src/PIL/PcxImagePlugin.py @@ -114,7 +114,7 @@ class PcxImageFile(ImageFile.ImageFile): # Don't trust the passed in stride. # Calculate the approximate position for ourselves. # CVE-2020-35653 - stride = (self._size[0] * bits + 7) // 8 + stride = (self.size[0] * bits + 7) // 8 # While the specification states that this must be even, # not all images follow this diff --git a/src/PIL/QoiImagePlugin.py b/src/PIL/QoiImagePlugin.py index 5c3407503..e51e739af 100644 --- a/src/PIL/QoiImagePlugin.py +++ b/src/PIL/QoiImagePlugin.py @@ -32,7 +32,7 @@ class QoiImageFile(ImageFile.ImageFile): self._mode = "RGB" if channels == 3 else "RGBA" self.fp.seek(1, os.SEEK_CUR) # colorspace - self.tile = [("qoi", (0, 0) + self._size, self.fp.tell(), None)] + self.tile = [("qoi", (0, 0) + self.size, self.fp.tell(), None)] class QoiDecoder(ImageFile.PyDecoder):