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)