From da0b18090170be34f07421b0f5a579b675ce307c Mon Sep 17 00:00:00 2001 From: Turo Lamminen Date: Sat, 12 Mar 2016 21:50:34 +0200 Subject: [PATCH] MD3: Fix crash on invalid vertex index --- code/MD3Loader.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/code/MD3Loader.cpp b/code/MD3Loader.cpp index 93ccc4ad1..53e890590 100644 --- a/code/MD3Loader.cpp +++ b/code/MD3Loader.cpp @@ -1000,9 +1000,13 @@ void MD3Importer::InternReadFile( const std::string& pFile, // Read vertices aiVector3D& vec = pcMesh->mVertices[iCurrent]; - vec.x = pcVertices[ pcTriangles->INDEXES[c]].X*AI_MD3_XYZ_SCALE; - vec.y = pcVertices[ pcTriangles->INDEXES[c]].Y*AI_MD3_XYZ_SCALE; - vec.z = pcVertices[ pcTriangles->INDEXES[c]].Z*AI_MD3_XYZ_SCALE; + uint32_t index = pcTriangles->INDEXES[c]; + if (index >= pcSurfaces->NUM_VERTICES) { + throw DeadlyImportError( "MD3: Invalid vertex index"); + } + vec.x = pcVertices[index].X*AI_MD3_XYZ_SCALE; + vec.y = pcVertices[index].Y*AI_MD3_XYZ_SCALE; + vec.z = pcVertices[index].Z*AI_MD3_XYZ_SCALE; // Convert the normal vector to uncompressed float3 format aiVector3D& nor = pcMesh->mNormals[iCurrent];