Kaydet (Commit) 6aa6cb63 authored tarafından Julien Nabet's avatar Julien Nabet

svmconverter value < 0 seem wrong for width and height (vcl/gdi)

Change-Id: I39e639e2e14d4c377f2e8f3a74869622d0611bd9
Reviewed-on: https://gerrit.libreoffice.org/62977
Tested-by: Jenkins
Reviewed-by: 's avatarJulien Nabet <serval2412@yahoo.fr>
üst 0512ed1e
...@@ -243,6 +243,13 @@ namespace ...@@ -243,6 +243,13 @@ namespace
#define LF_FACESIZE 32 #define LF_FACESIZE 32
void static lcl_error( SvStream& rIStm, const SvStreamEndian& nOldFormat, const sal_uLong& nPos)
{
rIStm.SetError(SVSTREAM_FILEFORMAT_ERROR);
rIStm.SetEndian(nOldFormat);
rIStm.Seek(nPos);
return;
}
void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf ) void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf )
{ {
const sal_uLong nPos = rIStm.Tell(); const sal_uLong nPos = rIStm.Tell();
...@@ -261,8 +268,20 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf ) ...@@ -261,8 +268,20 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf )
rIStm.ReadInt16( nVersion ); // Version rIStm.ReadInt16( nVersion ); // Version
sal_Int32 nTmp32(0); sal_Int32 nTmp32(0);
rIStm.ReadInt32( nTmp32 ); rIStm.ReadInt32( nTmp32 );
if (nTmp32 < 0)
{
SAL_WARN("vcl.gdi", "svm: value for width should be positive");
lcl_error(rIStm, nOldFormat, nPos);
return;
}
aPrefSz.setWidth( nTmp32 ); // PrefSize.Width() aPrefSz.setWidth( nTmp32 ); // PrefSize.Width()
rIStm.ReadInt32( nTmp32 ); rIStm.ReadInt32( nTmp32 );
if (nTmp32 < 0)
{
SAL_WARN("vcl.gdi", "svm: value for height should be positive");
lcl_error(rIStm, nOldFormat, nPos);
return;
}
aPrefSz.setHeight( nTmp32 ); // PrefSize.Height() aPrefSz.setHeight( nTmp32 ); // PrefSize.Height()
// check header-magic and version // check header-magic and version
...@@ -270,9 +289,8 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf ) ...@@ -270,9 +289,8 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf )
|| ( memcmp( aCode, "SVGDI", sizeof( aCode ) ) != 0 ) || ( memcmp( aCode, "SVGDI", sizeof( aCode ) ) != 0 )
|| ( nVersion != 200 ) ) || ( nVersion != 200 ) )
{ {
rIStm.SetError( SVSTREAM_FILEFORMAT_ERROR ); SAL_WARN("vcl.gdi", "svm: wrong check for header-magic and version");
rIStm.SetEndian( nOldFormat ); lcl_error(rIStm, nOldFormat, nPos);
rIStm.Seek( nPos );
return; return;
} }
......
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