drewnoakes / metadata-extractor

Extracts Exif, IPTC, XMP, ICC and other metadata from image, video and audio files
Apache License 2.0
2.55k stars 479 forks source link

Error while extracting MP3 metadata: Frequency #552

Open Marinek opened 2 years ago

Marinek commented 2 years ago

Hi ;)

I have an error while parsing mp3 metadata:

java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3 at com.drew.metadata.mp3.Mp3Reader.extract(Mp3Reader.java:99) ~[metadata-extractor-2.16.0.jar:2.16.0] at com.drew.imaging.mp3.Mp3MetadataReader.readMetadata(Mp3MetadataReader.java:58) ~[metadata-extractor-2.16.0.jar:2.16.0] at com.drew.imaging.ImageMetadataReader.readMetadata(ImageMetadataReader.java:179) ~[metadata-extractor-2.16.0.jar:2.16.0] at com.drew.imaging.ImageMetadataReader.readMetadata(ImageMetadataReader.java:124) ~[metadata-extractor-2.16.0.jar:2.16.0] at com.drew.imaging.ImageMetadataReader.readMetadata(ImageMetadataReader.java:204) ~[metadata-extractor-2.16.0.jar:2.16.0] at pici.scanner.PathScanner$1.getExifData(PathScanner.java:119) ~[main/:na]

Seems that there is a 4th? frequency entry, that can't be parsed. I'm currently searching for this specific mp3 file.

drewnoakes commented 2 years ago

Can you share a file that reproduces this issue? It'll be hard to reliably debug this otherwise.

I suspect this code is causing it, and should be made more defensive.

https://github.com/drewnoakes/metadata-extractor/blob/788c4257cb0ed5c7e644315c019fff6cdb5b7a37/Source/com/drew/metadata/mp3/Mp3Reader.java#L90-L101

With an actual file it'd be easier to work out whether there's an improvement to the library to be made here, so we can avoid throwing the value/directory away in this case.