소스 검색

Ply-Importer: Fix vulnerability (#5739)

Kim Kulling 1 년 전
부모
커밋
1e09642382
3개의 변경된 파일39개의 추가작업 그리고 0개의 파일을 삭제
  1. 3 0
      code/AssetLib/Ply/PlyLoader.cpp
  2. 30 0
      test/models/PLY/payload_JVN42386607
  3. 6 0
      test/unit/utPLYImportExport.cpp

+ 3 - 0
code/AssetLib/Ply/PlyLoader.cpp

@@ -448,6 +448,9 @@ void PLYImporter::LoadVertex(const PLY::Element *pcElement, const PLY::ElementIn
             mGeneratedMesh->mNumVertices = pcElement->NumOccur;
             mGeneratedMesh->mVertices = new aiVector3D[mGeneratedMesh->mNumVertices];
         }
+        if (pos >= mGeneratedMesh->mNumVertices) {
+            throw DeadlyImportError("Invalid .ply file: Too many vertices");
+        }
 
         mGeneratedMesh->mVertices[pos] = vOut;
 

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 30 - 0
test/models/PLY/payload_JVN42386607


+ 6 - 0
test/unit/utPLYImportExport.cpp

@@ -203,3 +203,9 @@ TEST_F(utPLYImportExport, parseInvalid) {
     const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/invalid/crash-30d6d0f7c529b3b66b4131700b7a4580cd7082df.ply", 0);
     EXPECT_EQ(nullptr, scene);
 }
+
+TEST_F(utPLYImportExport, payload_JVN42386607) {
+    Assimp::Importer importer;
+    const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/PLY/payload_JVN42386607", 0);
+   EXPECT_EQ(nullptr, scene);
+}

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.