Kaydet (Commit) e5d8a9d1 authored tarafından Caolán McNamara's avatar Caolán McNamara Kaydeden (comit) Andras Timar

test that nNumStripOffsets value is within bounds of file

Change-Id: I1483ea3671420be53496888892374641e10b344d
(cherry picked from commit feedb957)
Reviewed-on: https://gerrit.libreoffice.org/17151Reviewed-by: 's avatarDavid Tardon <dtardon@redhat.com>
Tested-by: 's avatarDavid Tardon <dtardon@redhat.com>
üst 3bc3656c
...@@ -373,14 +373,17 @@ void TIFFReader::ReadTagData( sal_uInt16 nTagType, sal_uInt32 nDataLen) ...@@ -373,14 +373,17 @@ void TIFFReader::ReadTagData( sal_uInt16 nTagType, sal_uInt32 nDataLen)
nNumStripOffsets = 0; nNumStripOffsets = 0;
nOldNumSO = nNumStripOffsets; nOldNumSO = nNumStripOffsets;
nDataLen += nOldNumSO; nDataLen += nOldNumSO;
if ( ( nDataLen > nOldNumSO ) && ( nDataLen < SAL_MAX_UINT32 / sizeof( sal_uInt32 ) ) ) size_t nMaxAllocAllowed = SAL_MAX_UINT32 / sizeof(sal_uInt32);
size_t nMaxRecordsAvailable = pTIFF->remainingSize() / DataTypeSize();
if (nDataLen > nOldNumSO && nDataLen < nMaxAllocAllowed &&
(nDataLen - nOldNumSO) <= nMaxRecordsAvailable)
{ {
nNumStripOffsets = nDataLen; nNumStripOffsets = nDataLen;
try try
{ {
pStripOffsets = new sal_uLong[ nNumStripOffsets ]; pStripOffsets = new sal_uLong[ nNumStripOffsets ];
} }
catch (const std::bad_alloc &) catch (const std::bad_alloc &)
{ {
pStripOffsets = NULL; pStripOffsets = NULL;
nNumStripOffsets = 0; nNumStripOffsets = 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment