Blob Blame History Raw
diff -rupN --no-dereference freeimage-svn-r1909-FreeImage-trunk/Source/Metadata/Exif.cpp freeimage-svn-r1909-FreeImage-trunk-new/Source/Metadata/Exif.cpp
--- freeimage-svn-r1909-FreeImage-trunk/Source/Metadata/Exif.cpp	2023-09-28 19:34:45.003036859 +0200
+++ freeimage-svn-r1909-FreeImage-trunk-new/Source/Metadata/Exif.cpp	2023-09-28 19:34:47.505011926 +0200
@@ -770,8 +770,13 @@ jpeg_read_exif_dir(FIBITMAP *dib, const
 	//
 
 	const WORD entriesCount0th = ReadUint16(msb_order, ifd0th);
-	
-	DWORD next_offset = ReadUint32(msb_order, DIR_ENTRY_ADDR(ifd0th, entriesCount0th));
+
+	const BYTE* de_addr = DIR_ENTRY_ADDR(ifd0th, entriesCount0th);
+	if(de_addr+4 >= (BYTE*)(dwLength + ifd0th - tiffp)) {
+		return TRUE; //< no thumbnail
+	}
+
+	DWORD next_offset = ReadUint32(msb_order, de_addr);
 	if((next_offset == 0) || (next_offset >= dwLength)) {
 		return TRUE; //< no thumbnail
 	}