Fix memory corruption when 3DS file has more smoothing groups than faces

pull/450/head
Turo Lamminen 2015-01-26 13:27:48 +02:00
parent c5d048a98a
commit 2f0675ac53
1 changed files with 3 additions and 0 deletions

View File

@ -948,6 +948,9 @@ void Discreet3DSImporter::ParseFaceChunk()
// This is the list of smoothing groups - a bitfield for every face.
// Up to 32 smoothing groups assigned to a single face.
unsigned int num = chunkSize/4, m = 0;
if (num > mMesh.mFaces.size()) {
throw DeadlyImportError("3DS: More smoothing groups than faces");
}
for (std::vector<D3DS::Face>::iterator i = mMesh.mFaces.begin(); m != num;++i, ++m) {
// nth bit is set for nth smoothing group
(*i).iSmoothGroup = stream->GetI4();