diff --git a/src/PIL/TiffImagePlugin.py b/src/PIL/TiffImagePlugin.py index 982096c9b08..fb6fa3605bf 100644 --- a/src/PIL/TiffImagePlugin.py +++ b/src/PIL/TiffImagePlugin.py @@ -2232,13 +2232,23 @@ def fixIFD(self) -> None: if tag in self.Tags: cur_pos = self.f.tell() - if is_local: - self._fixOffsets(count, field_size) - self.f.seek(cur_pos + fmt_size) - else: - self.f.seek(offset) - self._fixOffsets(count, field_size) - self.f.seek(cur_pos) + try: + if is_local: + self._fixOffsets(count, field_size) + self.f.seek(cur_pos + fmt_size) + else: + self.f.seek(offset) + self._fixOffsets(count, field_size) + self.f.seek(cur_pos) + except RuntimeError as e: + msg = ( + f"{e}:" + f" Tag ID {tag}" + f" Field Type {field_type}" + f" Field Size {field_size}" + f" Count {count}" + ) + raise RuntimeError(msg) from e elif is_local: # skip the locally stored value that is not an offset