Bug 701259 - Restrict BasicPlanarYCbCrImage scaling destination size. r=roc

This commit is contained in:
Chris Pearce 2011-11-15 09:35:46 +13:00
Родитель 5b53859d58
Коммит c5aabd8c01
1 изменённых файлов: 8 добавлений и 2 удалений

Просмотреть файл

@ -145,8 +145,9 @@ void
BasicPlanarYCbCrImage::SetData(const Data& aData)
{
// Do some sanity checks to prevent integer overflow
if (aData.mYSize.width > 16384 || aData.mYSize.height > 16384) {
NS_ERROR("Illegal width or height");
if (aData.mYSize.width > PlanarYCbCrImage::MAX_DIMENSION ||
aData.mYSize.height > PlanarYCbCrImage::MAX_DIMENSION) {
NS_ERROR("Illegal image source width or height");
return;
}
@ -159,6 +160,11 @@ BasicPlanarYCbCrImage::SetData(const Data& aData)
gfxIntSize size(mScaleHint);
gfxUtils::GetYCbCrToRGBDestFormatAndSize(aData, format, size);
if (size.width > PlanarYCbCrImage::MAX_DIMENSION ||
size.height > PlanarYCbCrImage::MAX_DIMENSION) {
NS_ERROR("Illegal image dest width or height");
return;
}
mStride = gfxASurface::FormatStrideForWidth(format, size.width);
mBuffer = AllocateBuffer(size.height * mStride);