Do sanity checks on data length in readBinaryArray in FBXSerializer_Node.cpp

This commit is contained in:
sabrina-shanman 2019-05-01 17:01:41 -07:00
parent c1ee4deb12
commit 8a799967d1

View file

@ -41,8 +41,14 @@ QVariant readBinaryArray(QDataStream& in, int& position) {
quint32 compressedLength;
in >> arrayLength;
if (arrayLength > std::numeric_limits<int>::max() / sizeof(T)) { // Upcoming byte containers are limited to max signed int
throw QString("FBX file most likely corrupt: binary data exceeds data limits");
}
in >> encoding;
in >> compressedLength;
if (compressedLength > std::numeric_limits<int>::max() / sizeof(T)) { // Upcoming byte containers are limited to max signed int
throw QString("FBX file most likely corrupt: compressed binary data exceeds data limits");
}
position += sizeof(quint32) * 3;
QVector<T> values;