[Libreoffice-commits] core.git: filter/source sd/qa
Caolán McNamara
caolanm at redhat.com
Sun Apr 9 18:05:31 UTC 2017
filter/source/graphicfilter/icgm/cgm.cxx | 13 ++++++++++++-
filter/source/graphicfilter/icgm/cgm.hxx | 3 ++-
sd/qa/unit/data/cgm/fail/recurse-1.cgm |binary
3 files changed, 14 insertions(+), 2 deletions(-)
New commits:
commit 4d66989d1ebac53ff8b2af7d17642e3ab688a317
Author: Caolán McNamara <caolanm at redhat.com>
Date: Sun Apr 9 18:51:31 2017 +0100
ofz#1078 cgm infinite recurse
Change-Id: I6ba4c6a432f1dd150591f8d9b0f03e248a97c33e
diff --git a/filter/source/graphicfilter/icgm/cgm.cxx b/filter/source/graphicfilter/icgm/cgm.cxx
index 714c4d73757e..d3669fe703d3 100644
--- a/filter/source/graphicfilter/icgm/cgm.cxx
+++ b/filter/source/graphicfilter/icgm/cgm.cxx
@@ -51,6 +51,7 @@ CGM::CGM(uno::Reference< frame::XModel > const & rModel)
, mbPictureBody(false)
, mbFigure(false)
, mbFirstOutPut(false)
+ , mbInDefaultReplacement(false)
, mnAct4PostReset(0)
, mpBitmapInUse(nullptr)
, mpChart(nullptr)
@@ -620,8 +621,16 @@ void CGM::ImplDoClass()
void CGM::ImplDefaultReplacement()
{
- if ( !maDefRepList.empty() )
+ if (!maDefRepList.empty())
{
+ if (mbInDefaultReplacement)
+ {
+ SAL_WARN("filter", "recursion in ImplDefaultReplacement");
+ return;
+ }
+
+ mbInDefaultReplacement = true;
+
sal_uInt32 nOldEscape = mnEscape;
sal_uInt32 nOldElementClass = mnElementClass;
sal_uInt32 nOldElementID = mnElementID;
@@ -663,6 +672,8 @@ void CGM::ImplDefaultReplacement()
mnParaSize = mnElementSize = nOldElementSize;
mpSource = pOldBuf;
mpEndValidSource = pOldEndValidSource;
+
+ mbInDefaultReplacement = false;
}
}
diff --git a/filter/source/graphicfilter/icgm/cgm.hxx b/filter/source/graphicfilter/icgm/cgm.hxx
index 4da49ea302de..a7c5d04d9d6d 100644
--- a/filter/source/graphicfilter/icgm/cgm.hxx
+++ b/filter/source/graphicfilter/icgm/cgm.hxx
@@ -64,7 +64,8 @@ class CGM
bool mbPictureBody;
bool mbFigure;
bool mbFirstOutPut;
- sal_uInt32 mnAct4PostReset;
+ bool mbInDefaultReplacement;
+ sal_uInt32 mnAct4PostReset;
CGMBitmap* mpBitmapInUse;
CGMChart* mpChart; // if sal_True->"SHWSLIDEREC"
// otherwise "BEGINPIC" commands
diff --git a/sd/qa/unit/data/cgm/fail/recurse-1.cgm b/sd/qa/unit/data/cgm/fail/recurse-1.cgm
new file mode 100644
index 000000000000..4ba3b95de4b0
Binary files /dev/null and b/sd/qa/unit/data/cgm/fail/recurse-1.cgm differ
More information about the Libreoffice-commits
mailing list