summaryrefslogtreecommitdiff
path: root/filter
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2017-04-09 18:51:31 +0100
committerCaolán McNamara <caolanm@redhat.com>2017-04-09 18:52:27 +0100
commit4d66989d1ebac53ff8b2af7d17642e3ab688a317 (patch)
tree34540bfdd028c2363a5ed7cc65fcfe3d35076169 /filter
parent7cd4b5912363de89c6ded921b6b5940493afc1cf (diff)
ofz#1078 cgm infinite recurse
Change-Id: I6ba4c6a432f1dd150591f8d9b0f03e248a97c33e
Diffstat (limited to 'filter')
-rw-r--r--filter/source/graphicfilter/icgm/cgm.cxx13
-rw-r--r--filter/source/graphicfilter/icgm/cgm.hxx3
2 files changed, 14 insertions, 2 deletions
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