浏览代码

Fix SEGV write in Assimp::SortByPTypeProcess::Execute (#6318)

* Fix OOB Write in Assimp::SortByPTypeProcess::Execute
Kyungjoon Ko 1 月之前
父节点
当前提交
6d7ea78792
共有 1 个文件被更改,包括 4 次插入1 次删除
  1. 4 1
      code/PostProcessing/SortByPTypeProcess.cpp

+ 4 - 1
code/PostProcessing/SortByPTypeProcess.cpp

@@ -188,12 +188,15 @@ void SortByPTypeProcess::Execute(aiScene *pScene) {
 
         unsigned int numPolyVerts = 0;
         for (; pFirstFace != pLastFace; ++pFirstFace) {
-            if (pFirstFace->mNumIndices <= 3)
+            if (pFirstFace->mNumIndices >= 1 && pFirstFace->mNumIndices <= 3)
                 ++aiNumPerPType[pFirstFace->mNumIndices - 1];
             else {
                 ++aiNumPerPType[3];
                 numPolyVerts += pFirstFace->mNumIndices;
             }
+            if (pFirstFace->mNumIndices == 0) {
+                ASSIMP_LOG_WARN("Face with 0 indices treated as polygon");
+            }
         }
 
         VertexWeightTable *avw = ComputeVertexBoneWeightTable(mesh);