diff --git a/lib/modules/Standards.pmod/EXIF.pmod b/lib/modules/Standards.pmod/EXIF.pmod index 60ed97db36dc6b14f69aaf5ad851ab67632db4d5..8a554a7a95f4405f07be6c7902bd7d2ff7c12d1b 100644 --- a/lib/modules/Standards.pmod/EXIF.pmod +++ b/lib/modules/Standards.pmod/EXIF.pmod @@ -1167,10 +1167,15 @@ mapping(string:mixed) get_properties(Stdio.File file, void|mapping tags) default: int size; sscanf(file->read(2), "%2c", size); - if( marker==0xe1 && file->read(6) == "Exif\0\0" ) - { - file = Stdio.FakeFile(file->read(size-2-6)); - break loop; + if (marker == 0xe1) { + // There could be other app sections tagged with 0xE1, not just EXIF + if (file->read(6) == "Exif\0\0") { + file = Stdio.FakeFile(file->read(size - 2 - 6)); + break loop; + } else { + // Undo last read + file->seek(file->tell() - 6); + } } file->read(size-2); continue;