RAF: Ignore JPEG decoder errors if the JPEG offsets are invalid

This commit is contained in:
Daniel Vogelbacher 2023-05-17 18:26:24 +02:00
parent d27c5ac838
commit f5f1f30f5b
2 changed files with 11 additions and 8 deletions

View File

@ -260,6 +260,7 @@ void RafImage::readMetadata() {
}
// Retreive metadata from embedded JPEG preview image.
try {
auto jpg_io = std::make_unique<Exiv2::MemIo>(jpg_buf.data(), jpg_buf.size());
auto jpg_img = JpegImage(std::move(jpg_io), false);
jpg_img.readMetadata();
@ -267,6 +268,8 @@ void RafImage::readMetadata() {
xmpData_ = jpg_img.xmpData();
exifData_ = jpg_img.exifData();
iptcData_ = jpg_img.iptcData();
} catch (const Exiv2::Error&) {
}
exifData_["Exif.Image2.JPEGInterchangeFormat"] = getULong(jpg_img_offset, bigEndian);
exifData_["Exif.Image2.JPEGInterchangeFormatLength"] = getULong(jpg_img_length, bigEndian);

View File

@ -22,7 +22,7 @@ class OutOfMemoryInRafImageReadMetadata(metaclass=CaseMeta):
$kerCorruptedMetadata
""",
"""Exiv2 exception in print action for file $filename2:
This does not look like a TIFF image
$kerCorruptedMetadata
"""
]
retval = [1,1]