Add various checks to avoid either too large or zero-sized memory allocations

This commit is contained in:
Turo Lamminen
2015-08-11 16:09:19 +03:00
parent e5ddb98dde
commit 5575a54466
3 changed files with 20 additions and 0 deletions

View File

@@ -783,6 +783,11 @@ void MD3Importer::InternReadFile( const std::string& pFile,
// Allocate output storage
pScene->mNumMeshes = pcHeader->NUM_SURFACES;
if (pcHeader->NUM_SURFACES == 0) {
throw DeadlyImportError("MD3: No surfaces");
} else if (pcHeader->NUM_SURFACES > std::numeric_limits<int32_t>::max() / sizeof(aiMesh)) {
throw DeadlyImportError("MD3: Too many surfaces, would run out of memory");
}
pScene->mMeshes = new aiMesh*[pScene->mNumMeshes];
pScene->mNumMaterials = pcHeader->NUM_SURFACES;