src/lib/CMXParser.cpp |    9 +++++++++
 1 file changed, 9 insertions(+)

New commits:
commit 263b1707ba5506fe9b162404b84b8e6c7b8d6ef5
Author: David Tardon <dtar...@redhat.com>
Date:   Tue Apr 4 19:27:23 2017 +0200

    ofz: avoid inf. loop if inst. size is 0
    
    Change-Id: I688a580878227adcf267bca02b22a0b2e2434f36

diff --git a/src/lib/CMXParser.cpp b/src/lib/CMXParser.cpp
index f74c10e..23175e9 100644
--- a/src/lib/CMXParser.cpp
+++ b/src/lib/CMXParser.cpp
@@ -402,8 +402,17 @@ void 
libcdr::CMXParser::readCommands(librevenge::RVNGInputStream *input, unsigne
   {
     long startPosition = input->tell();
     int instructionSize = readS16(input, m_bigEndian);
+    int minInstructionSize = 4;
     if (instructionSize < 0)
+    {
       instructionSize = readS32(input, m_bigEndian);
+      minInstructionSize += 4;
+    }
+    if (instructionSize < minInstructionSize)
+    {
+      CDR_DEBUG_MSG(("CMXParser::readCommands - invalid instructionSize %i\n", 
instructionSize));
+      instructionSize = minInstructionSize;
+    }
     m_nextInstructionOffset = startPosition+instructionSize;
     short instructionCode = abs(readS16(input, m_bigEndian));
     CDR_DEBUG_MSG(("CMXParser::readCommands - instructionSize %i, 
instructionCode %i\n", instructionSize, instructionCode));
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to