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)

Reply via email to