src/lib/VDXParser.cpp | 13 ------- src/lib/VSDTypes.h | 1 src/lib/VSDXMLParserBase.cpp | 20 +++++------ src/lib/VSDXParser.cpp | 2 - src/lib/VisioDocument.cpp | 75 ++++++++++++++++++++++++------------------- 5 files changed, 56 insertions(+), 55 deletions(-)
New commits: commit bf00f969aa16573f29ff6dac0d234f838009ee11 Author: David Tardon <dtar...@redhat.com> Date: Sun Dec 16 10:31:14 2012 +0100 coverity: copying uninitialized value diff --git a/src/lib/VSDTypes.h b/src/lib/VSDTypes.h index ef1db44..0b0d299 100644 --- a/src/lib/VSDTypes.h +++ b/src/lib/VSDTypes.h @@ -65,6 +65,7 @@ struct XForm // Utilities struct ChunkHeader { + ChunkHeader() : chunkType(0), id(0), list(0), dataLength(0), level(0), unknown(0), trailer(0) {} unsigned chunkType; // 4 bytes unsigned id; // 4 bytes unsigned list; // 4 bytes commit dddcceca764a1b557405c8dbc61d357d05e56344 Author: David Tardon <dtar...@redhat.com> Date: Sun Dec 16 10:26:36 2012 +0100 coverity: do not let VisioDocument::parse throw diff --git a/src/lib/VisioDocument.cpp b/src/lib/VisioDocument.cpp index 1392a9e..03f0a8d 100644 --- a/src/lib/VisioDocument.cpp +++ b/src/lib/VisioDocument.cpp @@ -164,47 +164,58 @@ static bool parseBinaryVisioDocument(WPXInputStream *input, libwpg::WPGPaintInte docStream->seek(0x1A, WPX_SEEK_SET); - unsigned char version = libvisio::readU8(docStream); libvisio::VSDParser *parser = 0; - switch(version) + try { - case 1: - case 2: - case 3: - case 4: - case 5: - parser = new libvisio::VSD5Parser(docStream, painter); - break; - case 6: - parser = new libvisio::VSD6Parser(docStream, painter); - break; - case 11: - parser = new libvisio::VSDParser(docStream, painter); - break; - default: - break; - } + unsigned char version = libvisio::readU8(docStream); + switch(version) + { + case 1: + case 2: + case 3: + case 4: + case 5: + parser = new libvisio::VSD5Parser(docStream, painter); + break; + case 6: + parser = new libvisio::VSD6Parser(docStream, painter); + break; + case 11: + parser = new libvisio::VSDParser(docStream, painter); + break; + default: + break; + } - bool retValue = false; - if (parser) - { - if (isStencilExtraction) - retValue = parser->extractStencils(); - else if (!isStencilExtraction) - retValue = parser->parseMain(); + bool retValue = false; + if (parser) + { + if (isStencilExtraction) + retValue = parser->extractStencils(); + else if (!isStencilExtraction) + retValue = parser->parseMain(); + } + else + { + if (docStream != input) + delete docStream; + return false; + } + + delete parser; + if (docStream != input) + delete docStream; + + return retValue; } - else + catch (...) { + delete parser; if (docStream != input) delete docStream; - return false; } - delete parser; - if (docStream != input) - delete docStream; - - return retValue; + return false; } static bool isOpcVisioDocument(WPXInputStream *input) commit 8b38ba731cfebefcf7d3c7ab1769c0b2e0f1e7b2 Author: David Tardon <dtar...@redhat.com> Date: Sun Dec 16 10:18:15 2012 +0100 coverity: drop duplicated code diff --git a/src/lib/VDXParser.cpp b/src/lib/VDXParser.cpp index 2c99b80..96d5166 100644 --- a/src/lib/VDXParser.cpp +++ b/src/lib/VDXParser.cpp @@ -783,17 +783,6 @@ void libvisio::VDXParser::readTextBlock(xmlTextReaderPtr reader) } while ((XML_TEXTBLOCK != tokenId || XML_READER_TYPE_END_ELEMENT != tokenType) && 1 == ret); - if (bgClrId < 0) - bgClrId = 0; - if (bgClrId) - { - std::map<unsigned, Colour>::const_iterator iter = m_colours.find(bgClrId-1); - if (iter != m_colours.end()) - bgColour = iter->second; - else - bgColour = Colour(); - } - if (m_isInStyles) m_collector->collectTextBlockStyle(level, leftMargin, rightMargin, topMargin, bottomMargin, verticalAlign, !!bgClrId, bgColour, defaultTabStop, textDirection); commit f8cdb0f948457a2183d117a438dee5ca3f603c4e Author: David Tardon <dtar...@redhat.com> Date: Sun Dec 16 10:10:40 2012 +0100 coverity: consistently check ret. value of read*Data diff --git a/src/lib/VDXParser.cpp b/src/lib/VDXParser.cpp index 6ff9cdf..2c99b80 100644 --- a/src/lib/VDXParser.cpp +++ b/src/lib/VDXParser.cpp @@ -342,7 +342,7 @@ void libvisio::VDXParser::readLine(xmlTextReaderPtr reader) break; case XML_LINECOLOR: if (XML_READER_TYPE_ELEMENT == tokenType) - readExtendedColourData(colour, reader); + ret = readExtendedColourData(colour, reader); break; case XML_LINEPATTERN: if (XML_READER_TYPE_ELEMENT == tokenType) diff --git a/src/lib/VSDXMLParserBase.cpp b/src/lib/VSDXMLParserBase.cpp index 1f8c9f2..e18c8bb 100644 --- a/src/lib/VSDXMLParserBase.cpp +++ b/src/lib/VSDXMLParserBase.cpp @@ -1264,7 +1264,7 @@ void libvisio::VSDXMLParserBase::readCharIX(xmlTextReaderPtr reader) break; case XML_COLOR: if (XML_READER_TYPE_ELEMENT == tokenType) - readExtendedColourData(fontColour, reader); + ret = readExtendedColourData(fontColour, reader); break; case XML_STYLE: if (XML_READER_TYPE_ELEMENT == tokenType) @@ -1337,7 +1337,7 @@ void libvisio::VSDXMLParserBase::readCharIX(xmlTextReaderPtr reader) break; case XML_SIZE: if (XML_READER_TYPE_ELEMENT == tokenType) - readDoubleData(fontSize, reader); + ret = readDoubleData(fontSize, reader); break; case XML_DBLUNDERLINE: if (XML_READER_TYPE_ELEMENT == tokenType) @@ -1430,34 +1430,34 @@ void libvisio::VSDXMLParserBase::readParaIX(xmlTextReaderPtr reader) tokenType = xmlTextReaderNodeType(reader); switch (tokenId) - { + { case XML_INDFIRST: if (XML_READER_TYPE_ELEMENT == tokenType) - readDoubleData(indFirst, reader); + ret = readDoubleData(indFirst, reader); break; case XML_INDLEFT: if (XML_READER_TYPE_ELEMENT == tokenType) - readDoubleData(indLeft, reader); + ret = readDoubleData(indLeft, reader); break; case XML_INDRIGHT: if (XML_READER_TYPE_ELEMENT == tokenType) - readDoubleData(indRight, reader); + ret = readDoubleData(indRight, reader); break; case XML_SPLINE: if (XML_READER_TYPE_ELEMENT == tokenType) - readDoubleData(spLine, reader); + ret = readDoubleData(spLine, reader); break; case XML_SPBEFORE: if (XML_READER_TYPE_ELEMENT == tokenType) - readDoubleData(spBefore, reader); + ret = readDoubleData(spBefore, reader); break; case XML_SPAFTER: if (XML_READER_TYPE_ELEMENT == tokenType) - readDoubleData(spAfter, reader); + ret = readDoubleData(spAfter, reader); break; case XML_HORZALIGN: if (XML_READER_TYPE_ELEMENT == tokenType) - readByteData(align, reader); + ret = readByteData(align, reader); break; case XML_BULLET: break; diff --git a/src/lib/VSDXParser.cpp b/src/lib/VSDXParser.cpp index 112a1a1..a6aa3ad 100644 --- a/src/lib/VSDXParser.cpp +++ b/src/lib/VSDXParser.cpp @@ -760,7 +760,7 @@ void libvisio::VSDXParser::readStyleProperties(xmlTextReaderPtr reader) break; case XML_LINECOLOR: if (XML_READER_TYPE_ELEMENT == tokenType) - readExtendedColourData(strokeColour, reader); + ret = readExtendedColourData(strokeColour, reader); break; case XML_LINEPATTERN: if (XML_READER_TYPE_ELEMENT == tokenType) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits