[Libreoffice-commits] core.git: 2 commits - basegfx/source filter/source
Caolán McNamara
caolanm at redhat.com
Tue Feb 9 10:11:12 UTC 2016
basegfx/source/tools/stringconversiontools.cxx | 2 -
filter/source/svg/svgreader.cxx | 45 +++++++++++++------------
2 files changed, 25 insertions(+), 22 deletions(-)
New commits:
commit cb7d12ea4d67278edaf0240a67221ca5d5d8e93c
Author: Caolán McNamara <caolanm at redhat.com>
Date: Tue Feb 9 10:05:07 2016 +0000
crashtesting: crash on loading moz414782-1.svg
Change-Id: I1324b902c0790350bc8c44e7d63ce45915e3b33f
diff --git a/basegfx/source/tools/stringconversiontools.cxx b/basegfx/source/tools/stringconversiontools.cxx
index f8181a6..8ea8624 100644
--- a/basegfx/source/tools/stringconversiontools.cxx
+++ b/basegfx/source/tools/stringconversiontools.cxx
@@ -50,7 +50,7 @@ namespace basegfx
sal_Int32& io_rPos,
const OUString& rStr)
{
- sal_Unicode aChar( rStr[io_rPos] );
+ sal_Unicode aChar = io_rPos < rStr.getLength() ? rStr[io_rPos] : 0;
OUStringBuffer sNumberString;
// sign
commit 3d42c1fc15c4c2dacf5da7d6555e3fc7ac10416c
Author: Caolán McNamara <caolanm at redhat.com>
Date: Tue Feb 9 09:56:43 2016 +0000
crashtesting: crash on loading moz330387-6.svg
Change-Id: I9bba4cd9332320285c06ca3ba8eaf94ab89dfeef
diff --git a/filter/source/svg/svgreader.cxx b/filter/source/svg/svgreader.cxx
index f3aeb17..243aa2c 100644
--- a/filter/source/svg/svgreader.cxx
+++ b/filter/source/svg/svgreader.cxx
@@ -348,29 +348,32 @@ struct AnnotatingVisitor
}
case XML_STOP:
{
- const sal_Int32 nNumAttrs( xAttributes->getLength() );
- maGradientStopVector.push_back(GradientStop());
- maGradientVector.back().maStops.push_back(maGradientStopVector.size()-1);
-
- // first parse 'color' as 'stop-color' might depend on it
- // if 'stop-color''s value is "currentColor" and parsed previously
- uno::Reference<xml::dom::XNode> xNodeColor(xAttributes->getNamedItem("color"));
- if(xNodeColor.is())
- parseGradientStop( maGradientStopVector.back(),
- maGradientStopVector.size()-1,
- XML_STOP_COLOR,
- xNodeColor->getNodeValue() );
-
- //now, parse the rest of attributes
- for( sal_Int32 i=0; i<nNumAttrs; ++i )
+ if (!maGradientVector.empty())
{
- const sal_Int32 nTokenId(
- getTokenId(xAttributes->item(i)->getNodeName()));
- if ( nTokenId != XML_COLOR )
+ const sal_Int32 nNumAttrs( xAttributes->getLength() );
+ maGradientStopVector.push_back(GradientStop());
+ maGradientVector.back().maStops.push_back(maGradientStopVector.size()-1);
+
+ // first parse 'color' as 'stop-color' might depend on it
+ // if 'stop-color''s value is "currentColor" and parsed previously
+ uno::Reference<xml::dom::XNode> xNodeColor(xAttributes->getNamedItem("color"));
+ if(xNodeColor.is())
parseGradientStop( maGradientStopVector.back(),
- maGradientStopVector.size()-1,
- nTokenId,
- xAttributes->item(i)->getNodeValue() );
+ maGradientStopVector.size()-1,
+ XML_STOP_COLOR,
+ xNodeColor->getNodeValue() );
+
+ //now, parse the rest of attributes
+ for( sal_Int32 i=0; i<nNumAttrs; ++i )
+ {
+ const sal_Int32 nTokenId(
+ getTokenId(xAttributes->item(i)->getNodeName()));
+ if ( nTokenId != XML_COLOR )
+ parseGradientStop( maGradientStopVector.back(),
+ maGradientStopVector.size()-1,
+ nTokenId,
+ xAttributes->item(i)->getNodeValue() );
+ }
}
break;
}
More information about the Libreoffice-commits
mailing list