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 }