MAINT-7779 Protections against wrong data

meow-7.2.2
andreykproductengine 2017-09-18 18:11:04 +03:00
parent 0b7020c0c5
commit 18483e902c
1 changed files with 9 additions and 10 deletions

View File

@ -550,9 +550,11 @@ bool LLTextureCacheRemoteWorker::doWrite()
{
if ((mOffset != 0) // We currently do not support write offsets
|| (mDataSize <= 0) // Things will go badly wrong if mDataSize is nul or negative...
|| (mImageSize < mDataSize))
|| (mImageSize < mDataSize)
|| (mRawDiscardLevel < 0)
|| (mRawImage->isBufferInvalid())) // decode failed or malfunctioned, don't write
{
LL_WARNS() << "INIT state check failed" << LL_ENDL;
LL_WARNS() << "INIT state check failed for image: " << mID << " Size: " << mImageSize << " DataSize: " << mDataSize << " Discard:" << mRawDiscardLevel << LL_ENDL;
mDataSize = -1; // failed
done = true;
}
@ -577,15 +579,12 @@ bool LLTextureCacheRemoteWorker::doWrite()
idx = mCache->setHeaderCacheEntry(mID, entry, mImageSize, mDataSize); // create the new entry.
if(idx >= 0)
{
// (almost always) write to the fast cache.
if (mRawImage->getDataSize())
// write to the fast cache.
if(!mCache->writeToFastCache(idx, mRawImage, mRawDiscardLevel))
{
if(!mCache->writeToFastCache(idx, mRawImage, mRawDiscardLevel))
{
LL_WARNS() << "writeToFastCache failed" << LL_ENDL;
mDataSize = -1; // failed
done = true;
}
LL_WARNS() << "writeToFastCache failed" << LL_ENDL;
mDataSize = -1; // failed
done = true;
}
}
}