ソースを参照

ASE: Fix possible out of bound access. (#6045)

Kim Kulling 5 ヶ月 前
コミット
7c705fde41
1 ファイル変更4 行追加0 行削除
  1. 4 0
      code/AssetLib/ASE/ASELoader.cpp

+ 4 - 0
code/AssetLib/ASE/ASELoader.cpp

@@ -731,6 +731,10 @@ void ASEImporter::BuildUniqueRepresentation(ASE::Mesh &mesh) {
     unsigned int iCurrent = 0, fi = 0;
     for (std::vector<ASE::Face>::iterator i = mesh.mFaces.begin(); i != mesh.mFaces.end(); ++i, ++fi) {
         for (unsigned int n = 0; n < 3; ++n, ++iCurrent) {
+            const uint32_t curIndex = (*i).mIndices[n];
+            if (curIndex >= mesh.mPositions.size()) {
+                throw DeadlyImportError("ASE: Invalid vertex index in face ", fi, ".");
+            }
             mPositions[iCurrent] = mesh.mPositions[(*i).mIndices[n]];
 
             // add texture coordinates