On Fri, 14 Feb 2025 17:34:05 GMT, Brian Burkhalter <b...@openjdk.org> wrote:

>> src/java.desktop/share/classes/com/sun/imageio/plugins/jpeg/ExifMarkerSegment.java
>>  line 165:
>> 
>>> 163:                 ByteOrder.BIG_ENDIAN : ByteOrder.LITTLE_ENDIAN);
>>> 164:         if (input.readUnsignedShort() != TIFF_MAGIC) {
>>> 165:             throw new IllegalArgumentException("Bad magic number");
>> 
>> Where does this exception end up ? I would have supposed that if there's an 
>> Exif segment we don't like it would be best to just act like the segment 
>> isn't there.
>
> I concur.

When you first asked: this exception would be thrown all the way up to the 
JPEGImageReader's caller. (That is: calling `myJPEGReader.getNumThumbnails` 
would throw this IAE.)

As of this writing: now this exception is ignored. It is consumed in this code 
in JPEGMetaData:

            case JPEG.APP1:
                newGuy = new MarkerSegment(buffer);
                newGuy.loadData(buffer);

                if (newGuy.data.length > 5 &&
                        newGuy.data[0] == 'E' &&
                        newGuy.data[1] == 'x' &&
                        newGuy.data[2] == 'i' &&
                        newGuy.data[3] == 'f' &&
                        newGuy.data[4] == 0) {
                    try {
                        newGuy = new ExifMarkerSegment(newGuy);
                    } catch(Exception e) {
                        // This is intentionally empty.
                        // Now we fallback to keeping the generic MarkerSegment
                    }
                }
                break;

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/22898#discussion_r1967100476

Reply via email to