From 0c2772e8bf7a1c2b93f486634695ec820dffdf91 Mon Sep 17 00:00:00 2001 From: Kirill Gavrilov Date: Tue, 12 Jan 2021 01:00:45 +0300 Subject: [PATCH 01/10] aiMaterial::GetTexture() - fix misleading description of path argument. Mention aiScene::GetEmbeddedTexture() as a proper way to check if returned path points to a file or to embedded texture. --- include/assimp/material.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/assimp/material.h b/include/assimp/material.h index 4daf0cdeb..13529f172 100644 --- a/include/assimp/material.h +++ b/include/assimp/material.h @@ -735,9 +735,9 @@ public: * #GetTextureCount() can be used to determine the number of textures * per texture type. * @param path Receives the path to the texture. - * If the texture is embedded, receives a '*' followed by the id of - * the texture (for the textures stored in the corresponding scene) which - * can be converted to an int using a function like atoi. + * Use aiScene::GetEmbeddedTexture() method to determine if returned path + * is an image file to be opened or a string key of embedded texture stored in the corresponding scene + * (could be a '*' followed by the id of the texture in case of no name) * NULL is a valid value. * @param mapping The texture mapping. * NULL is allowed as value. From 6db343386b73d69e0e4c14ab0bde0edab5e1585f Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Fri, 15 Jan 2021 16:46:15 +0100 Subject: [PATCH 02/10] remove install of zlibstatic --- contrib/zlib/CMakeLists.txt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/contrib/zlib/CMakeLists.txt b/contrib/zlib/CMakeLists.txt index 0e8a4b1e1..f088646a7 100644 --- a/contrib/zlib/CMakeLists.txt +++ b/contrib/zlib/CMakeLists.txt @@ -198,11 +198,11 @@ endif(MINGW) add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) -IF(WIN32) - INSTALL( TARGETS zlibstatic - EXPORT "${TARGETS_EXPORT_NAME}" - LIBRARY DESTINATION ${ASSIMP_LIB_INSTALL_DIR} - ARCHIVE DESTINATION ${ASSIMP_LIB_INSTALL_DIR} - RUNTIME DESTINATION ${ASSIMP_BIN_INSTALL_DIR} - COMPONENT ${LIBASSIMP_COMPONENT}) -ENDIF() +#IF(WIN32) +# INSTALL( TARGETS zlibstatic +# EXPORT "${TARGETS_EXPORT_NAME}" +# LIBRARY DESTINATION ${ASSIMP_LIB_INSTALL_DIR} +# ARCHIVE DESTINATION ${ASSIMP_LIB_INSTALL_DIR} +# RUNTIME DESTINATION ${ASSIMP_BIN_INSTALL_DIR} +# COMPONENT ${LIBASSIMP_COMPONENT}) +#ENDIF() From 8ad2661e0c85c80051992beee84c4c69c2ab1836 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sat, 16 Jan 2021 12:00:42 +0100 Subject: [PATCH 03/10] Update CMakeLists.txt --- contrib/zlib/CMakeLists.txt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/contrib/zlib/CMakeLists.txt b/contrib/zlib/CMakeLists.txt index f088646a7..0e8a4b1e1 100644 --- a/contrib/zlib/CMakeLists.txt +++ b/contrib/zlib/CMakeLists.txt @@ -198,11 +198,11 @@ endif(MINGW) add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) -#IF(WIN32) -# INSTALL( TARGETS zlibstatic -# EXPORT "${TARGETS_EXPORT_NAME}" -# LIBRARY DESTINATION ${ASSIMP_LIB_INSTALL_DIR} -# ARCHIVE DESTINATION ${ASSIMP_LIB_INSTALL_DIR} -# RUNTIME DESTINATION ${ASSIMP_BIN_INSTALL_DIR} -# COMPONENT ${LIBASSIMP_COMPONENT}) -#ENDIF() +IF(WIN32) + INSTALL( TARGETS zlibstatic + EXPORT "${TARGETS_EXPORT_NAME}" + LIBRARY DESTINATION ${ASSIMP_LIB_INSTALL_DIR} + ARCHIVE DESTINATION ${ASSIMP_LIB_INSTALL_DIR} + RUNTIME DESTINATION ${ASSIMP_BIN_INSTALL_DIR} + COMPONENT ${LIBASSIMP_COMPONENT}) +ENDIF() From 9334e076195635634adceeafdee68573e7c923d9 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sat, 16 Jan 2021 16:14:49 +0100 Subject: [PATCH 04/10] Update CMakeLists.txt --- contrib/zlib/CMakeLists.txt | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/contrib/zlib/CMakeLists.txt b/contrib/zlib/CMakeLists.txt index 0e8a4b1e1..469151ff6 100644 --- a/contrib/zlib/CMakeLists.txt +++ b/contrib/zlib/CMakeLists.txt @@ -198,11 +198,9 @@ endif(MINGW) add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) -IF(WIN32) - INSTALL( TARGETS zlibstatic - EXPORT "${TARGETS_EXPORT_NAME}" - LIBRARY DESTINATION ${ASSIMP_LIB_INSTALL_DIR} - ARCHIVE DESTINATION ${ASSIMP_LIB_INSTALL_DIR} - RUNTIME DESTINATION ${ASSIMP_BIN_INSTALL_DIR} - COMPONENT ${LIBASSIMP_COMPONENT}) -ENDIF() +INSTALL( TARGETS zlibstatic + EXPORT "${TARGETS_EXPORT_NAME}" + LIBRARY DESTINATION ${ASSIMP_LIB_INSTALL_DIR} + ARCHIVE DESTINATION ${ASSIMP_LIB_INSTALL_DIR} + RUNTIME DESTINATION ${ASSIMP_BIN_INSTALL_DIR} + COMPONENT ${LIBASSIMP_COMPONENT}) From 0969bf350064ca00f54cb0dd83f54688f22897a2 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sun, 17 Jan 2021 20:39:19 +0100 Subject: [PATCH 05/10] Fix Divide-by-zero in vector3 Fix for https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=29655 --- include/assimp/vector3.inl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/assimp/vector3.inl b/include/assimp/vector3.inl index 2765115a2..fda47d6a7 100644 --- a/include/assimp/vector3.inl +++ b/include/assimp/vector3.inl @@ -154,6 +154,9 @@ const aiVector3t& aiVector3t::operator *= (TReal f) { template AI_FORCE_INLINE const aiVector3t& aiVector3t::operator /= (TReal f) { + if ((T) f==0.0) { + return *this; + } const TReal invF = (TReal) 1.0 / f; x *= invF; y *= invF; From 658fec3e61cdb5c2eed66b1d6d3747b85d97565d Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sun, 17 Jan 2021 20:41:44 +0100 Subject: [PATCH 06/10] Fix cast --- include/assimp/vector3.inl | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/include/assimp/vector3.inl b/include/assimp/vector3.inl index fda47d6a7..1d024e03f 100644 --- a/include/assimp/vector3.inl +++ b/include/assimp/vector3.inl @@ -5,8 +5,6 @@ Open Asset Import Library (assimp) Copyright (c) 2006-2020, assimp team - - All rights reserved. Redistribution and use of this software in source and binary forms, @@ -154,7 +152,7 @@ const aiVector3t& aiVector3t::operator *= (TReal f) { template AI_FORCE_INLINE const aiVector3t& aiVector3t::operator /= (TReal f) { - if ((T) f==0.0) { + if ( f == static_cast(0.0)) { return *this; } const TReal invF = (TReal) 1.0 / f; From 5a764fff042cd21756681bd08fe3afc172e3e070 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 18 Jan 2021 19:44:10 +0100 Subject: [PATCH 07/10] Fix overflow in aiString --- include/assimp/types.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/include/assimp/types.h b/include/assimp/types.h index 74763d496..0e50ed0ae 100644 --- a/include/assimp/types.h +++ b/include/assimp/types.h @@ -307,7 +307,7 @@ struct aiString { void Set(const char *sz) { const ai_int32 len = (ai_uint32)::strlen(sz); if (len > (ai_int32)MAXLEN - 1) { - return; + len = (ai_int32) MAXLEN - 1; } length = len; memcpy(data, sz, len); @@ -321,7 +321,10 @@ struct aiString { } length = rOther.length; - ; + if (length >(MAXLEN - 1)) { + length = (ai_int32) MAXLEN - 1; + } + memcpy(data, rOther.data, length); data[length] = '\0'; return *this; From 11ee9d367321ea175f9f2917a26db9f7b7e66ef3 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 18 Jan 2021 19:46:32 +0100 Subject: [PATCH 08/10] Update types.h --- include/assimp/types.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/assimp/types.h b/include/assimp/types.h index 0e50ed0ae..99527dcc2 100644 --- a/include/assimp/types.h +++ b/include/assimp/types.h @@ -305,7 +305,7 @@ struct aiString { /** Copy a const char* to the aiString */ void Set(const char *sz) { - const ai_int32 len = (ai_uint32)::strlen(sz); + ai_int32 len = (ai_uint32)::strlen(sz); if (len > (ai_int32)MAXLEN - 1) { len = (ai_int32) MAXLEN - 1; } From 0803e5e6f3fb210c7e0bb035b611eb595e70cabf Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 18 Jan 2021 20:25:33 +0100 Subject: [PATCH 09/10] Fix nullptr dereference in scenepreprocessor --- code/Common/ScenePreprocessor.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/code/Common/ScenePreprocessor.cpp b/code/Common/ScenePreprocessor.cpp index 2b73d9452..31d0ab75f 100644 --- a/code/Common/ScenePreprocessor.cpp +++ b/code/Common/ScenePreprocessor.cpp @@ -4,7 +4,6 @@ Open Asset Import Library (assimp) Copyright (c) 2006-2020, assimp team - All rights reserved. Redistribution and use of this software in source and binary forms, @@ -52,8 +51,12 @@ void ScenePreprocessor::ProcessScene() { ai_assert(scene != nullptr); // Process all meshes - for (unsigned int i = 0; i < scene->mNumMeshes; ++i) + for (unsigned int i = 0; i < scene->mNumMeshes; ++i) { + if (nullptr == scene->mMeshes[i] { + continue; + } ProcessMesh(scene->mMeshes[i]); + } // - nothing to do for nodes for the moment // - nothing to do for textures for the moment @@ -61,8 +64,12 @@ void ScenePreprocessor::ProcessScene() { // - nothing to do for cameras for the moment // Process all animations - for (unsigned int i = 0; i < scene->mNumAnimations; ++i) + for (unsigned int i = 0; i < scene->mNumAnimations; ++i) { + if (nullptr == scene->mAnimations[i]) { + continue; + } ProcessAnimation(scene->mAnimations[i]); + } // Generate a default material if none was specified if (!scene->mNumMaterials && scene->mNumMeshes) { From f24c04292506325fe3aba355d350d5f58812622e Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 18 Jan 2021 20:28:38 +0100 Subject: [PATCH 10/10] Fix typo --- code/Common/ScenePreprocessor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/Common/ScenePreprocessor.cpp b/code/Common/ScenePreprocessor.cpp index 31d0ab75f..113ca7ff1 100644 --- a/code/Common/ScenePreprocessor.cpp +++ b/code/Common/ScenePreprocessor.cpp @@ -52,7 +52,7 @@ void ScenePreprocessor::ProcessScene() { // Process all meshes for (unsigned int i = 0; i < scene->mNumMeshes; ++i) { - if (nullptr == scene->mMeshes[i] { + if (nullptr == scene->mMeshes[i]) { continue; } ProcessMesh(scene->mMeshes[i]);