summaryrefslogtreecommitdiff
path: root/filter
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2017-02-14 11:33:44 +0000
committerCaolán McNamara <caolanm@redhat.com>2017-02-14 11:34:52 +0000
commitdfc58d2db77c205e5829d557045eb8f6801a664d (patch)
tree9db45cac39d33e1405e556a31e65042218ba3da1 /filter
parent5e4fb242789f619b66fad4392df4079f6c4863dc (diff)
check data needed to fulfil ras claims before allocating
Change-Id: Ifdd820e4ea4287f97cc07cb86c0a180d06081449
Diffstat (limited to 'filter')
-rw-r--r--filter/source/graphicfilter/iras/iras.cxx12
1 files changed, 10 insertions, 2 deletions
diff --git a/filter/source/graphicfilter/iras/iras.cxx b/filter/source/graphicfilter/iras/iras.cxx
index 3fb27e56e507..30d618ef6032 100644
--- a/filter/source/graphicfilter/iras/iras.cxx
+++ b/filter/source/graphicfilter/iras/iras.cxx
@@ -168,6 +168,14 @@ bool RASReader::ReadRAS(Graphic & rGraphic)
if (!bOk)
return false;
+ if (mnType != RAS_TYPE_BYTE_ENCODED) //simple raw format
+ {
+ if (m_rRAS.remainingSize() < static_cast<sal_uInt64>(mnHeight) * mnWidth * mnDepth / 8)
+ {
+ return false;
+ }
+ }
+
Bitmap aBmp(Size(mnWidth, mnHeight), mnDstBitsPerPix);
Bitmap::ScopedWriteAccess pAcc(aBmp);
if (pAcc == nullptr)
@@ -178,6 +186,7 @@ bool RASReader::ReadRAS(Graphic & rGraphic)
pAcc->SetPalette(aPalette);
}
+
// Bitmap-Daten einlesen
mbStatus = ImplReadBody(pAcc.get());
@@ -191,7 +200,7 @@ bool RASReader::ImplReadHeader()
{
m_rRAS.ReadInt32(mnWidth).ReadInt32(mnHeight).ReadInt32(mnDepth).ReadInt32(mnImageDatSize).ReadInt32(mnType).ReadInt32(mnColorMapType).ReadInt32(mnColorMapSize);
- if (mnWidth <= 0 || mnHeight <= 0 || mnImageDatSize <= 0 || !m_rRAS.good())
+ if (!m_rRAS.good() || mnWidth <= 0 || mnHeight <= 0 || mnImageDatSize <= 0)
mbStatus = false;
switch ( mnDepth )
@@ -223,7 +232,6 @@ bool RASReader::ImplReadHeader()
return mbStatus;
}
-
bool RASReader::ImplReadBody(BitmapWriteAccess * pAcc)
{
sal_Int32 x, y;