check data needed to fulfil ras claims before allocating
Change-Id: Ifdd820e4ea4287f97cc07cb86c0a180d06081449
This commit is contained in:
@@ -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;
|
||||
|
Reference in New Issue
Block a user