From aee4df9be8c403d2d361b28a3fc5f10bef2e445d Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 17 Apr 2023 15:40:29 +0200 Subject: [PATCH] Fix possible dereferencing of invalid pointer. - closes https://github.com/assimp/assimp/issues/4918 --- code/AssetLib/Obj/ObjFileImporter.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/code/AssetLib/Obj/ObjFileImporter.cpp b/code/AssetLib/Obj/ObjFileImporter.cpp index 189757815..cf4515794 100644 --- a/code/AssetLib/Obj/ObjFileImporter.cpp +++ b/code/AssetLib/Obj/ObjFileImporter.cpp @@ -3,7 +3,7 @@ Open Asset Import Library (assimp) --------------------------------------------------------------------------- -Copyright (c) 2006-2020, assimp team +Copyright (c) 2006-2023, assimp team All rights reserved. @@ -84,7 +84,6 @@ ObjFileImporter::ObjFileImporter() : // Destructor. ObjFileImporter::~ObjFileImporter() { delete m_pRootObject; - m_pRootObject = nullptr; } // ------------------------------------------------------------------------------------------------ @@ -270,7 +269,7 @@ aiNode *ObjFileImporter::createNodes(const ObjFile::Model *pModel, const ObjFile for (size_t i = 0; i < pObject->m_Meshes.size(); ++i) { unsigned int meshId = pObject->m_Meshes[i]; aiMesh *pMesh = createTopology(pModel, pObject, meshId); - if (pMesh) { + if (pMesh != nullptr) { if (pMesh->mNumFaces > 0) { MeshArray.push_back(pMesh); } else { @@ -324,14 +323,13 @@ aiMesh *ObjFileImporter::createTopology(const ObjFile::Model *pModel, const ObjF return nullptr; } - std::unique_ptr pMesh(new aiMesh); + aiMesh *pMesh = new aiMesh; if (!pObjMesh->m_name.empty()) { pMesh->mName.Set(pObjMesh->m_name); } for (size_t index = 0; index < pObjMesh->m_Faces.size(); index++) { const ObjFile::Face *inp = pObjMesh->m_Faces[index]; - //ai_assert(nullptr != inp); if (inp->mPrimitiveType == aiPrimitiveType_LINE) { pMesh->mNumFaces += static_cast(inp->m_vertices.size() - 1); @@ -387,9 +385,9 @@ aiMesh *ObjFileImporter::createTopology(const ObjFile::Model *pModel, const ObjF } // Create mesh vertices - createVertexArray(pModel, pData, meshIndex, pMesh.get(), uiIdxCount); + createVertexArray(pModel, pData, meshIndex, pMesh, uiIdxCount); - return pMesh.release(); + return pMesh; } // ------------------------------------------------------------------------------------------------