Skip to content

Commit 151d806

Browse files
authored
Handle images that has corrupted headers/tags (#152)
Signed-off-by: Harmouch101 <mahmoudddharmouchhh@gmail.com>
1 parent 11600ec commit 151d806

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

exifread/classes.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,12 @@ def _process_field(self, tag_name, count, field_type, type_length, offset):
169169
unpack_format += 'd'
170170
self.file_handle.seek(self.offset + offset)
171171
byte_str = self.file_handle.read(type_length)
172-
value = struct.unpack(unpack_format, byte_str)
172+
try:
173+
value = struct.unpack(unpack_format, byte_str)
174+
except struct.error:
175+
logger.warning('Possibly corrupted field %s', tag_name)
176+
# -1 means corrupted
177+
value = -1
173178
else:
174179
value = self.s2n(offset, type_length, signed)
175180
values.append(value)
@@ -247,7 +252,6 @@ def _process_tag(self, ifd, ifd_name: str, tag_entry, entry, tag: int, tag_name,
247252
values = self._process_field2(ifd_name, tag_name, count, offset)
248253
else:
249254
values = self._process_field(tag_name, count, field_type, type_length, offset)
250-
251255
# now 'values' is either a string or an array
252256
# TODO: use only one type
253257
if count == 1 and field_type != 2:

0 commit comments

Comments
 (0)