[Libreoffice-commits] libmspub.git: 2 commits - src/lib

David Tardon dtardon at redhat.com
Tue Nov 25 06:39:03 PST 2014


 src/lib/MSPUBParser.cpp |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 0ab2f4869b5d5f43a3793ae7e556bd5825609552
Author: David Tardon <dtardon at redhat.com>
Date:   Tue Nov 25 15:27:51 2014 +0100

    do not dereference past-the-end iterator
    
    Change-Id: I93b300e79163c9fb6a6f32f937c75e6265f1c5b7

diff --git a/src/lib/MSPUBParser.cpp b/src/lib/MSPUBParser.cpp
index 2797845..ee30d91 100644
--- a/src/lib/MSPUBParser.cpp
+++ b/src/lib/MSPUBParser.cpp
@@ -967,13 +967,13 @@ bool MSPUBParser::parseQuill(librevenge::RVNGInputStream *input)
     unsigned bytesRead = 0;
     std::vector<TextSpanReference>::iterator currentTextSpan = spans.begin();
     std::vector<TextParagraphReference>::iterator currentTextPara = paras.begin();
-    for (unsigned j = 0; j < textIDs.size() && j < textLengths.size() && currentTextPara != paras.end(); ++j)
+    for (unsigned j = 0; j < textIDs.size() && j < textLengths.size(); ++j)
     {
       MSPUB_DEBUG_MSG(("Parsing a text block.\n"));
       std::vector<TextParagraph> readParas;
       std::vector<TextSpan> readSpans;
       std::vector<unsigned char> text;
-      for (unsigned k = 0; k < textLengths[j] && currentTextSpan != spans.end(); ++k)
+      for (unsigned k = 0; k < textLengths[j] && currentTextPara != paras.end() && currentTextSpan != spans.end(); ++k)
       {
         text.push_back(readU8(input));
         text.push_back(readU8(input));
commit b33edc1675cec963340466627973fba070d2747d
Author: David Tardon <dtardon at redhat.com>
Date:   Tue Nov 25 15:22:30 2014 +0100

    do not dereference past-the-end iterator
    
    Change-Id: Icef6e8a324f85c51c27dd03a03ca1c37e4b01bc1

diff --git a/src/lib/MSPUBParser.cpp b/src/lib/MSPUBParser.cpp
index 091f2b5..2797845 100644
--- a/src/lib/MSPUBParser.cpp
+++ b/src/lib/MSPUBParser.cpp
@@ -967,13 +967,13 @@ bool MSPUBParser::parseQuill(librevenge::RVNGInputStream *input)
     unsigned bytesRead = 0;
     std::vector<TextSpanReference>::iterator currentTextSpan = spans.begin();
     std::vector<TextParagraphReference>::iterator currentTextPara = paras.begin();
-    for (unsigned j = 0; j < textIDs.size() && j < textLengths.size(); ++j)
+    for (unsigned j = 0; j < textIDs.size() && j < textLengths.size() && currentTextPara != paras.end(); ++j)
     {
       MSPUB_DEBUG_MSG(("Parsing a text block.\n"));
       std::vector<TextParagraph> readParas;
       std::vector<TextSpan> readSpans;
       std::vector<unsigned char> text;
-      for (unsigned k = 0; k < textLengths[j]; ++k)
+      for (unsigned k = 0; k < textLengths[j] && currentTextSpan != spans.end(); ++k)
       {
         text.push_back(readU8(input));
         text.push_back(readU8(input));


More information about the Libreoffice-commits mailing list