Resolves: ofz#488 check remaining size while parsing
Change-Id: Ibb2b6c59a159f9fafa6a065be438b59a6d2d3f21
This commit is contained in:
parent
01112d2a63
commit
e897f9d74d
@ -466,7 +466,6 @@ void MakePreview(sal_uInt8* pBuf, sal_uInt32 nBytesRead,
|
|||||||
pVDev->SetFillColor();
|
pVDev->SetFillColor();
|
||||||
|
|
||||||
aFont.SetColor( COL_LIGHTRED );
|
aFont.SetColor( COL_LIGHTRED );
|
||||||
// aFont.SetSize( Size( 0, 32 ) );
|
|
||||||
|
|
||||||
pVDev->Push( PushFlags::FONT );
|
pVDev->Push( PushFlags::FONT );
|
||||||
pVDev->SetFont( aFont );
|
pVDev->SetFont( aFont );
|
||||||
@ -477,12 +476,19 @@ void MakePreview(sal_uInt8* pBuf, sal_uInt32 nBytesRead,
|
|||||||
OUString aString;
|
OUString aString;
|
||||||
int nLen;
|
int nLen;
|
||||||
sal_uInt8* pDest = ImplSearchEntry( pBuf, reinterpret_cast<sal_uInt8 const *>("%%Title:"), nBytesRead - 32, 8 );
|
sal_uInt8* pDest = ImplSearchEntry( pBuf, reinterpret_cast<sal_uInt8 const *>("%%Title:"), nBytesRead - 32, 8 );
|
||||||
if ( pDest )
|
sal_uInt32 nRemainingBytes = pDest ? (nBytesRead - (pDest - pBuf)) : 0;
|
||||||
|
if (nRemainingBytes >= 8)
|
||||||
{
|
{
|
||||||
pDest += 8;
|
pDest += 8;
|
||||||
if ( *pDest == ' ' )
|
nRemainingBytes -= 8;
|
||||||
pDest++;
|
if (nRemainingBytes && *pDest == ' ')
|
||||||
nLen = ImplGetLen( pDest, 32 );
|
{
|
||||||
|
++pDest;
|
||||||
|
--nRemainingBytes;
|
||||||
|
}
|
||||||
|
nLen = ImplGetLen(pDest, std::min<sal_uInt32>(nRemainingBytes, 32));
|
||||||
|
if (static_cast<sal_uInt32>(nLen) < nRemainingBytes)
|
||||||
|
{
|
||||||
sal_uInt8 aOldValue(pDest[ nLen ]); pDest[ nLen ] = 0;
|
sal_uInt8 aOldValue(pDest[ nLen ]); pDest[ nLen ] = 0;
|
||||||
if ( strcmp( reinterpret_cast<char*>(pDest), "none" ) != 0 )
|
if ( strcmp( reinterpret_cast<char*>(pDest), "none" ) != 0 )
|
||||||
{
|
{
|
||||||
@ -491,40 +497,60 @@ void MakePreview(sal_uInt8* pBuf, sal_uInt32 nBytesRead,
|
|||||||
}
|
}
|
||||||
pDest[ nLen ] = aOldValue;
|
pDest[ nLen ] = aOldValue;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
pDest = ImplSearchEntry( pBuf, reinterpret_cast<sal_uInt8 const *>("%%Creator:"), nBytesRead - 32, 10 );
|
pDest = ImplSearchEntry( pBuf, reinterpret_cast<sal_uInt8 const *>("%%Creator:"), nBytesRead - 32, 10 );
|
||||||
if ( pDest )
|
nRemainingBytes = pDest ? (nBytesRead - (pDest - pBuf)) : 0;
|
||||||
|
if (nRemainingBytes >= 10)
|
||||||
{
|
{
|
||||||
pDest += 10;
|
pDest += 10;
|
||||||
if ( *pDest == ' ' )
|
nRemainingBytes -= 10;
|
||||||
pDest++;
|
if (nRemainingBytes && *pDest == ' ')
|
||||||
nLen = ImplGetLen( pDest, 32 );
|
{
|
||||||
|
++pDest;
|
||||||
|
--nRemainingBytes;
|
||||||
|
}
|
||||||
|
nLen = ImplGetLen(pDest, std::min<sal_uInt32>(nRemainingBytes, 32));
|
||||||
|
if (static_cast<sal_uInt32>(nLen) < nRemainingBytes)
|
||||||
|
{
|
||||||
sal_uInt8 aOldValue(pDest[nLen]); pDest[nLen] = 0;
|
sal_uInt8 aOldValue(pDest[nLen]); pDest[nLen] = 0;
|
||||||
const char* pStr = reinterpret_cast<char*>(pDest);
|
const char* pStr = reinterpret_cast<char*>(pDest);
|
||||||
aString += " Creator:" + OUString(pStr, strlen(pStr), RTL_TEXTENCODING_ASCII_US) + "\n";
|
aString += " Creator:" + OUString(pStr, strlen(pStr), RTL_TEXTENCODING_ASCII_US) + "\n";
|
||||||
pDest[nLen] = aOldValue;
|
pDest[nLen] = aOldValue;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
pDest = ImplSearchEntry( pBuf, reinterpret_cast<sal_uInt8 const *>("%%CreationDate:"), nBytesRead - 32, 15 );
|
pDest = ImplSearchEntry( pBuf, reinterpret_cast<sal_uInt8 const *>("%%CreationDate:"), nBytesRead - 32, 15 );
|
||||||
if ( pDest )
|
nRemainingBytes = pDest ? (nBytesRead - (pDest - pBuf)) : 0;
|
||||||
|
if (nRemainingBytes >= 15)
|
||||||
{
|
{
|
||||||
pDest += 15;
|
pDest += 15;
|
||||||
if ( *pDest == ' ' )
|
nRemainingBytes -= 15;
|
||||||
pDest++;
|
if (nRemainingBytes && *pDest == ' ')
|
||||||
nLen = ImplGetLen( pDest, 32 );
|
{
|
||||||
|
++pDest;
|
||||||
|
--nRemainingBytes;
|
||||||
|
}
|
||||||
|
nLen = ImplGetLen(pDest, std::min<sal_uInt32>(nRemainingBytes, 32));
|
||||||
|
if (static_cast<sal_uInt32>(nLen) < nRemainingBytes)
|
||||||
|
{
|
||||||
sal_uInt8 aOldValue(pDest[ nLen ]); pDest[ nLen ] = 0;
|
sal_uInt8 aOldValue(pDest[ nLen ]); pDest[ nLen ] = 0;
|
||||||
if ( strcmp( reinterpret_cast<char*>(pDest), "none" ) != 0 )
|
if ( strcmp( reinterpret_cast<char*>(pDest), "none" ) != 0 )
|
||||||
{
|
{
|
||||||
|
aString += " CreationDate:" + OUString::createFromAscii( reinterpret_cast<char*>(pDest) ) + "\n";
|
||||||
const char* pStr = reinterpret_cast<char*>(pDest);
|
const char* pStr = reinterpret_cast<char*>(pDest);
|
||||||
aString += " CreationDate:" + OUString(pStr, strlen(pStr), RTL_TEXTENCODING_ASCII_US) + "\n";
|
aString += " CreationDate:" + OUString(pStr, strlen(pStr), RTL_TEXTENCODING_ASCII_US) + "\n";
|
||||||
}
|
}
|
||||||
pDest[ nLen ] = aOldValue;
|
pDest[ nLen ] = aOldValue;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
pDest = ImplSearchEntry( pBuf, reinterpret_cast<sal_uInt8 const *>("%%LanguageLevel:"), nBytesRead - 4, 16 );
|
pDest = ImplSearchEntry( pBuf, reinterpret_cast<sal_uInt8 const *>("%%LanguageLevel:"), nBytesRead - 4, 16 );
|
||||||
if ( pDest )
|
nRemainingBytes = pDest ? (nBytesRead - (pDest - pBuf)) : 0;
|
||||||
|
if (nRemainingBytes >= 16)
|
||||||
{
|
{
|
||||||
pDest += 16;
|
pDest += 16;
|
||||||
sal_uInt32 nCount = 4;
|
nRemainingBytes -= 16;
|
||||||
long nNumber = ImplGetNumber(pDest, nCount);
|
sal_uInt32 nCount = std::min<sal_uInt32>(nRemainingBytes, 4U);
|
||||||
if ( nCount && ( (sal_uInt32)nNumber < 10 ) )
|
sal_uInt32 nNumber = ImplGetNumber(pDest, nCount);
|
||||||
|
if (nCount && nNumber < 10)
|
||||||
{
|
{
|
||||||
aString += " LanguageLevel:" + OUString::number( nNumber );
|
aString += " LanguageLevel:" + OUString::number( nNumber );
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user