From fef9fbea7cbed02272f2cfb21578b10f4339e45c Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 13 May 2024 08:42:28 +0200 Subject: [PATCH] Add checks for invalid buffer ans size --- code/Common/Assimp.cpp | 9 +++++++-- test/unit/AssimpAPITest.cpp | 9 +++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/code/Common/Assimp.cpp b/code/Common/Assimp.cpp index cf57bac4b..bd1d6aedd 100644 --- a/code/Common/Assimp.cpp +++ b/code/Common/Assimp.cpp @@ -233,8 +233,13 @@ const aiScene *aiImportFileFromMemoryWithProperties( unsigned int pFlags, const char *pHint, const aiPropertyStore *props) { - ai_assert(nullptr != pBuffer); - ai_assert(0 != pLength); + if (pBuffer == nullptr) { + return nullptr; + } + + if (pLength == 0u) { + return nullptr; + } const aiScene *scene = nullptr; ASSIMP_BEGIN_EXCEPTION_REGION(); diff --git a/test/unit/AssimpAPITest.cpp b/test/unit/AssimpAPITest.cpp index effe940b1..5797bde80 100644 --- a/test/unit/AssimpAPITest.cpp +++ b/test/unit/AssimpAPITest.cpp @@ -60,3 +60,12 @@ TEST_F( AssimpAPITest, aiGetLastErrorTest ) { const char *error = aiGetErrorString(); EXPECT_NE(nullptr, error); } + +TEST_F(AssimpAPITest, aiImportFileFromMemoryTest) { + const aiScene *scene_null_buffer = aiImportFileFromMemory(nullptr, 0u, 0u, nullptr); + EXPECT_EQ(nullptr, scene_null_buffer); + + char buffer[1024] = {'\0'}; + const aiScene *scene_null_size = aiImportFileFromMemory(buffer, 0u, 0u, nullptr); + EXPECT_EQ(nullptr, scene_null_size); +}