Fix IndexError on tags with empty values list - #258
Open
devmaiter wants to merge 1 commit into
Open
Conversation
A tag declaring a single non-ASCII value whose data cannot be read (e.g. truncated or corrupted file) leaves the decoded values list empty, and building the printable string crashed with IndexError. Seen in the wild on DJI M3E MakerNote tags. Guard the zero-index access and add a minimal synthetic sample image reproducing the DJI MakerNote case, with a regression test.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #254
When a tag declares a single value (
count == 1) but its data cannot be read — e.g. a truncated or corrupted file — the decodedvalueslist is empty, and_get_printable_for_fieldraised anIndexErroronvalues[0], aborting processing of the whole file.This falls back to an empty
printablestring in that case, so the remaining tags are still returned.Includes a minimal sample image (86 bytes, crafted from the DJI M3E case reported in the issue) and a regression test asserting the file processes without error and the affected tag decodes to an empty printable.