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
#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 )
{
const sal_uLong nPos = rIStm.Tell();
......@@ -261,8 +268,20 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf )
rIStm.ReadInt16( nVersion ); // Version
sal_Int32 nTmp32(0);
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()
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()
// check header-magic and version
......@@ -270,9 +289,8 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf )
|| ( memcmp( aCode, "SVGDI", sizeof( aCode ) ) != 0 )
|| ( nVersion != 200 ) )
{
rIStm.SetError( SVSTREAM_FILEFORMAT_ERROR );
rIStm.SetEndian( nOldFormat );
rIStm.Seek( nPos );
SAL_WARN("vcl.gdi", "svm: wrong check for header-magic and version");
lcl_error(rIStm, nOldFormat, nPos);
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