Skip to content

Handle malformed HEIC box types and invalid thumbnail offsets#253

Open
bysiber wants to merge 1 commit intoianare:masterfrom
bysiber:fix-malformed-file-crashes
Open

Handle malformed HEIC box types and invalid thumbnail offsets#253
bysiber wants to merge 1 commit intoianare:masterfrom
bysiber:fix-malformed-file-crashes

Conversation

@bysiber
Copy link

@bysiber bysiber commented Feb 21, 2026

Fixes two crashes that happen when process_file encounters malformed image files:

1. HEIC files with non-ASCII box types (#245)

HEICExifFinder.next_box() calls self.get(4).decode("ascii") on the raw box type bytes, which blows up with UnicodeDecodeError if a byte is outside the ASCII range. This now catches the decode error and raises InvalidExif instead, which process_file already knows how to handle.

2. JPEG files with non-integer thumbnail offsets (#247)

extract_jpeg_thumbnail() does self.offset + thumb_offset.values[0], but if the EXIF tag stores a non-integer value (like a tuple), this raises TypeError. Added a try/except around the thumbnail extraction so a bad offset just gets skipped with a debug log message.

Both cases previously let unhandled exceptions escape process_file, crashing any application that parses untrusted images. All existing tests pass.

Fix two crashes when processing malformed image files:

- HEIC files with non-ASCII box types now raise InvalidExif instead of
  crashing with UnicodeDecodeError (fixes ianare#245)
- JPEG files with non-integer thumbnail offsets are gracefully skipped
  instead of crashing with TypeError (fixes ianare#247)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant