summaryrefslogtreecommitdiff
path: root/XMPFiles/source/FormatSupport/PSIR_FileWriter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'XMPFiles/source/FormatSupport/PSIR_FileWriter.cpp')
-rw-r--r--XMPFiles/source/FormatSupport/PSIR_FileWriter.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/XMPFiles/source/FormatSupport/PSIR_FileWriter.cpp b/XMPFiles/source/FormatSupport/PSIR_FileWriter.cpp
index 182926a..70a31ae 100644
--- a/XMPFiles/source/FormatSupport/PSIR_FileWriter.cpp
+++ b/XMPFiles/source/FormatSupport/PSIR_FileWriter.cpp
@@ -319,6 +319,12 @@ void PSIR_FileWriter::ParseFileResources ( XMP_IO* fileRef, XMP_Uns32 length )
XMP_Uns32 dataLen = XIO::ReadUns32_BE ( fileRef );
XMP_Uns32 dataTotal = ((dataLen + 1) & 0xFFFFFFFEUL); // Round up to an even total.
+ // See bug https://bugs.freedesktop.org/show_bug.cgi?id=105204
+ // If dataLen is 0xffffffff, then dataTotal might be 0
+ // and therefor make the CheckFileSpace test pass.
+ if (dataTotal < dataLen) {
+ break;
+ }
if ( ! XIO::CheckFileSpace ( fileRef, dataTotal ) ) break; // Bad image resource.
XMP_Int64 thisDataPos = fileRef->Offset();