src/lib/VSDXMLParserBase.cpp | 2 +- src/lib/libvisio_utils.cpp | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-)
New commits: commit 12029a5fbbda72216c2a525f0680be0c2a346781 Author: Fridrich Å trba <[email protected]> Date: Wed Aug 28 10:32:06 2013 +0200 Some versions of boost bomb on '=' padding characters diff --git a/src/lib/libvisio_utils.cpp b/src/lib/libvisio_utils.cpp index 9ad520c..0f99d5c 100644 --- a/src/lib/libvisio_utils.cpp +++ b/src/lib/libvisio_utils.cpp @@ -28,7 +28,9 @@ * instead of those above. */ +#include <vector> #include <string> +#include <algorithm> // std::count #include "VSDInternalStream.h" #include "libvisio_utils.h" @@ -126,16 +128,21 @@ double libvisio::readDouble(WPXInputStream *input) void libvisio::appendFromBase64(WPXBinaryData &data, const unsigned char *base64Data, size_t base64DataLength) { - boost::iterator_range<const char *> base64String((const char *)base64Data, (const char *)base64Data + base64DataLength); + std::string base64String((const char *)base64Data, base64DataLength); + unsigned numPadding = std::count(base64String.begin(), base64String.end(), '='); + std::replace(base64String.begin(),base64String.end(),'=','A'); // replace '=' by base64 encoding of '\0' typedef boost::archive::iterators::transform_width< boost::archive::iterators::binary_from_base64< boost::archive::iterators::remove_whitespace< std::string::const_iterator > >, 8, 6 > base64_decoder; std::vector<unsigned char> buffer; std::copy(base64_decoder(base64String.begin()), base64_decoder(base64String.end()), std::back_inserter(buffer)); - if (!buffer.empty()) - data.append(&buffer[0], buffer.size()); + { + buffer.erase(buffer.end()-numPadding,buffer.end()); // erase padding '\0' characters + if (!buffer.empty()) + data.append(&buffer[0], buffer.size()); + } } const ::WPXString libvisio::getColourString(const Colour &c) commit 573868072b8c7b33b6a9562724ea0df96443b17c Author: Fridrich Å trba <[email protected]> Date: Wed Aug 28 09:53:27 2013 +0200 Misleading debug message diff --git a/src/lib/VSDXMLParserBase.cpp b/src/lib/VSDXMLParserBase.cpp index 4dee1cd..894af90 100644 --- a/src/lib/VSDXMLParserBase.cpp +++ b/src/lib/VSDXMLParserBase.cpp @@ -1647,7 +1647,7 @@ void libvisio::VSDXMLParserBase::readStencil(xmlTextReaderPtr reader) void libvisio::VSDXMLParserBase::readForeignData(xmlTextReaderPtr reader) { - VSD_DEBUG_MSG(("VSDXParser::readForeignData\n")); + VSD_DEBUG_MSG(("VSDXMLParser::readForeignData\n")); if (!m_shape.m_foreign) m_shape.m_foreign = new ForeignData();
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
