Forráskód Böngészése

MD2: Check file is big enough to contain all the advertised frames

Turo Lamminen 9 éve
szülő
commit
b0f453dba8
1 módosított fájl, 4 hozzáadás és 1 törlés
  1. 4 1
      code/MD2Loader.cpp

+ 4 - 1
code/MD2Loader.cpp

@@ -189,10 +189,13 @@ void MD2Importer::ValidateHeader( )
         throw DeadlyImportError("Invalid MD2 header: too many frames, would overflow");
     }
 
+    // -1 because Frame already contains one
+    unsigned int frameSize = sizeof (MD2::Frame) + (m_pcHeader->numVertices - 1) * sizeof(MD2::Vertex);
+
     if (m_pcHeader->offsetSkins     + m_pcHeader->numSkins * sizeof (MD2::Skin)         >= fileSize ||
         m_pcHeader->offsetTexCoords + m_pcHeader->numTexCoords * sizeof (MD2::TexCoord) >= fileSize ||
         m_pcHeader->offsetTriangles + m_pcHeader->numTriangles * sizeof (MD2::Triangle) >= fileSize ||
-        m_pcHeader->offsetFrames        + m_pcHeader->numFrames * sizeof (MD2::Frame)           >= fileSize ||
+        m_pcHeader->offsetFrames    + m_pcHeader->numFrames * frameSize                 >= fileSize ||
         m_pcHeader->offsetEnd           > fileSize)
     {
         throw DeadlyImportError("Invalid MD2 header: some offsets are outside the file");