RAF: Ignore JPEG decoder errors if the JPEG offsets are invalid
This commit is contained in:
parent
d27c5ac838
commit
f5f1f30f5b
@ -260,13 +260,16 @@ void RafImage::readMetadata() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Retreive metadata from embedded JPEG preview image.
|
// Retreive metadata from embedded JPEG preview image.
|
||||||
auto jpg_io = std::make_unique<Exiv2::MemIo>(jpg_buf.data(), jpg_buf.size());
|
try {
|
||||||
auto jpg_img = JpegImage(std::move(jpg_io), false);
|
auto jpg_io = std::make_unique<Exiv2::MemIo>(jpg_buf.data(), jpg_buf.size());
|
||||||
jpg_img.readMetadata();
|
auto jpg_img = JpegImage(std::move(jpg_io), false);
|
||||||
setByteOrder(jpg_img.byteOrder());
|
jpg_img.readMetadata();
|
||||||
xmpData_ = jpg_img.xmpData();
|
setByteOrder(jpg_img.byteOrder());
|
||||||
exifData_ = jpg_img.exifData();
|
xmpData_ = jpg_img.xmpData();
|
||||||
iptcData_ = jpg_img.iptcData();
|
exifData_ = jpg_img.exifData();
|
||||||
|
iptcData_ = jpg_img.iptcData();
|
||||||
|
} catch (const Exiv2::Error&) {
|
||||||
|
}
|
||||||
|
|
||||||
exifData_["Exif.Image2.JPEGInterchangeFormat"] = getULong(jpg_img_offset, bigEndian);
|
exifData_["Exif.Image2.JPEGInterchangeFormat"] = getULong(jpg_img_offset, bigEndian);
|
||||||
exifData_["Exif.Image2.JPEGInterchangeFormatLength"] = getULong(jpg_img_length, bigEndian);
|
exifData_["Exif.Image2.JPEGInterchangeFormatLength"] = getULong(jpg_img_length, bigEndian);
|
||||||
|
|||||||
@ -22,7 +22,7 @@ class OutOfMemoryInRafImageReadMetadata(metaclass=CaseMeta):
|
|||||||
$kerCorruptedMetadata
|
$kerCorruptedMetadata
|
||||||
""",
|
""",
|
||||||
"""Exiv2 exception in print action for file $filename2:
|
"""Exiv2 exception in print action for file $filename2:
|
||||||
This does not look like a TIFF image
|
$kerCorruptedMetadata
|
||||||
"""
|
"""
|
||||||
]
|
]
|
||||||
retval = [1,1]
|
retval = [1,1]
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user