psd: Don't abort on broken images

oss-fuzz/46418
This commit is contained in:
Albert Astals Cid
2022-04-06 00:35:02 +02:00
parent 84d56d00cf
commit 5c47a97b79
3 changed files with 22 additions and 4 deletions

View File

@ -9,6 +9,8 @@
#include "ras_p.h"
#include "util_p.h"
#include <QDataStream>
#include <QDebug>
#include <QImage>
@ -102,8 +104,7 @@ static bool LoadRAS(QDataStream &s, const RasHeader &ras, QImage &img)
{
s.device()->seek(RasHeader::SIZE);
// QVector uses some extra space for stuff, hence the 32 here suggested by thiago
if (ras.ColorMapLength > std::numeric_limits<int>::max() - 32) {
if (ras.ColorMapLength > kMaxQVectorSize) {
qWarning() << "LoadRAS() unsupported image color map length in file header" << ras.ColorMapLength;
return false;
}
@ -127,8 +128,7 @@ static bool LoadRAS(QDataStream &s, const RasHeader &ras, QImage &img)
qWarning() << "LoadRAS() mistmatch between height and width" << ras.Width << ras.Height << ras.Length << ras.Depth;
return false;
}
// QVector uses some extra space for stuff, hence the 32 here suggested by thiago
if (ras.Length > std::numeric_limits<int>::max() - 32) {
if (ras.Length > kMaxQVectorSize) {
qWarning() << "LoadRAS() unsupported image length in file header" << ras.Length;
return false;
}