Skip to content

[IMAGING-240] Preserve EXIF fields when a subdirectory footer is truncated - #564

Open
lilth2 wants to merge 2 commits into
apache:masterfrom
lilth2:pr/imaging-240
Open

lilth2 wants to merge 2 commits into
apache:masterfrom
lilth2:pr/imaging-240

Conversation

@lilth2

@lilth2 lilth2 commented Oct 23, 2026

Copy link
Copy Markdown

Imaging.getImageInfo() fails on the JPEG attached to IMAGING-240 because its EXIF subdirectory ends after the last complete entry, without the four-byte next-directory offset. This prevents reading the image information even though the JPEG dimensions are available.

In non-strict classic TIFF parsing, treat an incomplete, unused EXIF subdirectory footer as the end of the directory chain, preserve the parsed fields, and record a format-compliance comment. Strict parsing, root-directory parsing, and BigTIFF retain their existing behavior; general I/O exceptions are not suppressed.

Regression coverage includes the reported 731 x 727 JPEG, preservation of EXIF entries, strict rejection, a complete footer, truncated root rejection, one to three remaining footer bytes, and big-endian EXIF data.

Issue: https://issues.apache.org/jira/browse/IMAGING-240

Validation: default mvn completed successfully on OpenJDK 23.0.2 and Maven 3.9.16 at f767bcf. Tests run: 1,268; failures: 0; errors: 0; skipped: 7. The complete default build, including RAT, Checkstyle, SpotBugs, PMD, and Javadoc, passed.

shuyangyuzu-cmd and others added 2 commits October 23, 2026 22:50
Preserve complete EXIF fields when the unused next-directory offset is truncated during non-strict classic TIFF parsing. Keep strict and root-directory parsing unchanged, and record a format compliance comment.

Add five regression tests covering the reported JPEG, retained EXIF fields, strict rejection, a completed footer, and truncated root rejection. Full default Maven build passes: 1264 tests, zero failures or errors, seven skipped.
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.

3 participants