Hi,
Darktable crashes here on 5.9/64bit when opening DNG files.
Attached is a patch that fixes this crash here on 5.9/x86_64. I placed
it in graphics/darktable/patches, build a package and the test
succeeded.
A bug including the patch has been also created
(https://redmine.darktable.org/issues/11059).
Sven
diff --git a/src/external/rawspeed/RawSpeed/TiffIFD.cpp
b/src/external/rawspeed/RawSpeed/TiffIFD.cpp
index f68e0bd..709069f 100644
--- src/external/rawspeed/RawSpeed/TiffIFD.cpp.orig
+++ src/external/rawspeed/RawSpeed/TiffIFD.cpp
@@ -58,7 +58,7 @@ TiffIFD::TiffIFD(FileMap* f, uint32 offset) {
TiffEntry *t = new TiffEntry(f, offset + 2 + i*12, offset);
switch (t->tag) {
- case DNGPRIVATEDATA:
+ case DNGPRIVATEDATA:
{
try {
TiffIFD *maker_ifd = parseDngPrivateData(t);
@@ -118,9 +118,10 @@ TiffIFD* TiffIFD::parseDngPrivateData(TiffEntry *t) {
*/
uint32 size = t->count;
const uchar8 *data = t->getData();
- string id((const char*)data);
- if (0 != id.compare("Adobe"))
+ const char *const ADOBE = "Adobe";
+ if (0 != strncmp((const char *)data, ADOBE, strlen(ADOBE))) {
ThrowTPE("Not Adobe Private data");
+ }
data+=6;
if (!(data[0] == 'M' && data[1] == 'a' && data[2] == 'k' &&data[3] == 'N' ))
@@ -161,7 +162,7 @@ TiffIFD* TiffIFD::parseDngPrivateData(TiffEntry *t) {
memcpy(&maker_data[org_offset],data, count);
FileMap *maker_map = new FileMap(maker_data, org_offset+count);
- TiffIFD *maker_ifd;
+ TiffIFD *maker_ifd = 0;
try {
maker_ifd = parseMakerNote(maker_map, org_offset, makernote_endian);
} catch (TiffParserException &e) {
@@ -267,7 +268,7 @@ TiffIFD* TiffIFD::parseMakerNote(FileMap *f, uint32 offset,
Endianness parent_en
} catch (...) {
if (mFile != f)
delete mFile;
- throw;
+ throw;
}
if (mFile != f)