Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package assimp for openSUSE:Factory checked 
in at 2024-12-29 11:55:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/assimp (Old)
 and      /work/SRC/openSUSE:Factory/.assimp.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "assimp"

Sun Dec 29 11:55:59 2024 rev:30 rq:1233500 version:5.4.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/assimp/assimp.changes    2024-09-18 
15:27:10.509571260 +0200
+++ /work/SRC/openSUSE:Factory/.assimp.new.1881/assimp.changes  2024-12-29 
11:56:01.710675203 +0100
@@ -1,0 +2,15 @@
+Fri Dec 27 08:05:57 UTC 2024 - Christophe Marin <christo...@krop.fr>
+
+- Add patches:
+  * 0001-Fix-leak-5762.patch
+  * CVE-2024-48423.patch (boo#1232322, CVE-2024-48423)
+  * CVE-2024-48424.patch (boo#1232323, CVE-2024-48424)
+  * CVE-2024-53425.patch (boo#1233633, CVE-2024-53425)
+
+-------------------------------------------------------------------
+Wed Oct 30 09:42:38 UTC 2024 - Christophe Marin <christo...@krop.fr>
+
+- Add upstream change (boo#1232324, CVE-2024-48425)
+  * 0001-SplitLargeMeshes-Fix-crash-5799.patch
+
+-------------------------------------------------------------------

New:
----
  0001-Fix-leak-5762.patch
  0001-SplitLargeMeshes-Fix-crash-5799.patch
  CVE-2024-48423.patch
  CVE-2024-48424.patch
  CVE-2024-53425.patch

BETA DEBUG BEGIN:
  New:- Add patches:
  * 0001-Fix-leak-5762.patch
  * CVE-2024-48423.patch (boo#1232322, CVE-2024-48423)
  New:- Add upstream change (boo#1232324, CVE-2024-48425)
  * 0001-SplitLargeMeshes-Fix-crash-5799.patch
  New:  * 0001-Fix-leak-5762.patch
  * CVE-2024-48423.patch (boo#1232322, CVE-2024-48423)
  * CVE-2024-48424.patch (boo#1232323, CVE-2024-48424)
  New:  * CVE-2024-48423.patch (boo#1232322, CVE-2024-48423)
  * CVE-2024-48424.patch (boo#1232323, CVE-2024-48424)
  * CVE-2024-53425.patch (boo#1233633, CVE-2024-53425)
  New:  * CVE-2024-48424.patch (boo#1232323, CVE-2024-48424)
  * CVE-2024-53425.patch (boo#1233633, CVE-2024-53425)
BETA DEBUG END:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ assimp.spec ++++++
--- /var/tmp/diff_new_pack.VBopsr/_old  2024-12-29 11:56:02.558709979 +0100
+++ /var/tmp/diff_new_pack.VBopsr/_new  2024-12-29 11:56:02.562710143 +0100
@@ -22,9 +22,17 @@
 Release:        0
 Summary:        Library to load and process 3D scenes from various data formats
 License:        BSD-3-Clause AND MIT
-Group:          Development/Libraries/C and C++
 URL:            https://github.com/assimp/assimp
 Source0:        %{name}-%{version}.tar.xz
+# PATCH-FIX-UPSTREAM
+Patch0:         0001-SplitLargeMeshes-Fix-crash-5799.patch
+# PATCH-FIX-UPSTREAM
+Patch1:         0001-Fix-leak-5762.patch
+Patch2:         CVE-2024-48423.patch
+# PATCH-FIX-UPSTREAM
+Patch3:         CVE-2024-48424.patch
+# PATCH-FIX-UPSTREAM
+Patch4:         CVE-2024-53425.patch
 BuildRequires:  cmake >= 3.22
 BuildRequires:  dos2unix
 BuildRequires:  gcc-c++
@@ -42,7 +50,6 @@
 
 %package -n libassimp%{sover}
 Summary:        Library to load and process 3D scenes from various data formats
-Group:          System/Libraries
 
 %description -n libassimp%{sover}
 Assimp is a library to load and process geometric scenes from various data 
formats.
@@ -53,7 +60,6 @@
 
 %package devel
 Summary:        Headers, docs and command-line utility for assimp
-Group:          Development/Libraries/C and C++
 Requires:       glibc-devel
 Requires:       libassimp%{sover} = %{version}
 Requires:       libstdc++-devel

++++++ 0001-Fix-leak-5762.patch ++++++
>From 4024726eca89331503bdab33d0b9186e901bbc45 Mon Sep 17 00:00:00 2001
From: Kim Kulling <kimkull...@users.noreply.github.com>
Date: Sat, 7 Sep 2024 21:02:34 +0200
Subject: [PATCH] Fix leak (#5762)

* Fix leak

* Update utLogger.cpp
---
 code/Common/Assimp.cpp        | 13 ++++++---
 fuzz/assimp_fuzzer.cc         |  2 +-
 test/CMakeLists.txt           |  1 +
 test/unit/Common/utLogger.cpp | 52 +++++++++++++++++++++++++++++++++++
 4 files changed, 63 insertions(+), 5 deletions(-)
 create mode 100644 test/unit/Common/utLogger.cpp

diff --git a/code/Common/Assimp.cpp b/code/Common/Assimp.cpp
index ef3ee7b5d..91896e405 100644
--- a/code/Common/Assimp.cpp
+++ b/code/Common/Assimp.cpp
@@ -359,20 +359,25 @@ void CallbackToLogRedirector(const char *msg, char *dt) {
     s->write(msg);
 }
 
+static LogStream *DefaultStream = nullptr;
+
 // 
------------------------------------------------------------------------------------------------
 ASSIMP_API aiLogStream aiGetPredefinedLogStream(aiDefaultLogStream pStream, 
const char *file) {
     aiLogStream sout;
 
     ASSIMP_BEGIN_EXCEPTION_REGION();
-    LogStream *stream = LogStream::createDefaultStream(pStream, file);
-    if (!stream) {
+    if (DefaultStream == nullptr) {
+        DefaultStream = LogStream::createDefaultStream(pStream, file);
+    }
+    
+    if (!DefaultStream) {
         sout.callback = nullptr;
         sout.user = nullptr;
     } else {
         sout.callback = &CallbackToLogRedirector;
-        sout.user = (char *)stream;
+        sout.user = (char *)DefaultStream;
     }
-    gPredefinedStreams.push_back(stream);
+    gPredefinedStreams.push_back(DefaultStream);
     ASSIMP_END_EXCEPTION_REGION(aiLogStream);
     return sout;
 }
diff --git a/fuzz/assimp_fuzzer.cc b/fuzz/assimp_fuzzer.cc
index 8178674e8..91ffd9d69 100644
--- a/fuzz/assimp_fuzzer.cc
+++ b/fuzz/assimp_fuzzer.cc
@@ -47,7 +47,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 
DAMAGE.
 using namespace Assimp;
 
 extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t dataSize) {
-    aiLogStream stream = 
aiGetPredefinedLogStream(aiDefaultLogStream_STDOUT,NULL);
+    aiLogStream stream = aiGetPredefinedLogStream(aiDefaultLogStream_STDOUT, 
nullptr);
     aiAttachLogStream(&stream);
 
     Importer importer;
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 7b7fd850a..1a45adac7 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -100,6 +100,7 @@ SET( COMMON
   unit/Common/utBase64.cpp
   unit/Common/utHash.cpp
   unit/Common/utBaseProcess.cpp
+  unit/Common/utLogger.cpp
 )
 
 SET(Geometry 
diff --git a/test/unit/Common/utLogger.cpp b/test/unit/Common/utLogger.cpp
new file mode 100644
index 000000000..932240a7f
--- /dev/null
+++ b/test/unit/Common/utLogger.cpp
@@ -0,0 +1,52 @@
+/*
+---------------------------------------------------------------------------
+Open Asset Import Library (assimp)
+---------------------------------------------------------------------------
+
+Copyright (c) 2006-2024, assimp team
+
+All rights reserved.
+
+Redistribution and use of this software in source and binary forms,
+with or without modification, are permitted provided that the following
+conditions are met:
+
+* Redistributions of source code must retain the above
+copyright notice, this list of conditions and the
+following disclaimer.
+
+* Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the
+following disclaimer in the documentation and/or other
+materials provided with the distribution.
+
+* Neither the name of the assimp team, nor the names of its
+contributors may be used to endorse or promote products
+derived from this software without specific prior
+written permission of the assimp team.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+---------------------------------------------------------------------------
+*/
+
+#include "UnitTestPCH.h"
+#include <assimp/Importer.hpp>
+
+using namespace Assimp;
+class utLogger : public ::testing::Test {};
+
+TEST_F(utLogger, aiGetPredefinedLogStream_leak_test) {
+    aiLogStream stream1 = aiGetPredefinedLogStream(aiDefaultLogStream_STDOUT, 
nullptr);
+    aiLogStream stream2 = aiGetPredefinedLogStream(aiDefaultLogStream_STDOUT, 
nullptr);
+    ASSERT_EQ(stream1.callback, stream2.callback);
+}
-- 
2.47.1


++++++ 0001-SplitLargeMeshes-Fix-crash-5799.patch ++++++
>From ecdf8d24b85367b22ba353b4f82299d4af7f1f97 Mon Sep 17 00:00:00 2001
From: Kim Kulling <kimkull...@users.noreply.github.com>
Date: Mon, 7 Oct 2024 10:30:45 +0200
Subject: [PATCH] SplitLargeMeshes: Fix crash (#5799)

- Fix nullptr access when rootnode of the scene is a nullptr. This can happen 
even if the scene stores any kind of meshes. closes 
https://github.com/assimp/assimp/issues/5791
---
 code/PostProcessing/SplitLargeMeshes.cpp | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/code/PostProcessing/SplitLargeMeshes.cpp 
b/code/PostProcessing/SplitLargeMeshes.cpp
index 3bee28521..cb9727651 100644
--- a/code/PostProcessing/SplitLargeMeshes.cpp
+++ b/code/PostProcessing/SplitLargeMeshes.cpp
@@ -100,6 +100,11 @@ void SplitLargeMeshesProcess_Triangle::SetupProperties( 
const Importer* pImp) {
 // 
------------------------------------------------------------------------------------------------
 // Update a node after some meshes have been split
 void SplitLargeMeshesProcess_Triangle::UpdateNode(aiNode* pcNode, const 
std::vector<std::pair<aiMesh*, unsigned int> >& avList) {
+    if (pcNode == nullptr) {
+        ASSIMP_LOG_WARN("UpdateNode skipped, nullptr detected.");
+        return; 
+    }
+    
     // for every index in out list build a new entry
     std::vector<unsigned int> aiEntries;
     aiEntries.reserve(pcNode->mNumMeshes + 1);
-- 
2.47.0


++++++ CVE-2024-48423.patch ++++++
>From f12e52198669239af525e525ebb68407977f8e34 Mon Sep 17 00:00:00 2001
From: tyler92 <tyle...@inbox.ru>
Date: Wed, 11 Dec 2024 12:17:14 +0200
Subject: [PATCH] Fix use after free in the CallbackToLogRedirector (#5918)

The heap-use-after-free vulnerability occurs in the
CallbackToLogRedirector function. During the process of logging,
a previously freed memory region is accessed, leading to a
use-after-free condition. This vulnerability stems from incorrect
memory management, specifically, freeing a log stream and then
attempting to access it later on.

This patch sets NULL value for The DefaultStream global pointer.

Co-authored-by: Kim Kulling <kimkull...@users.noreply.github.com>
---
 code/Common/Assimp.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/code/Common/Assimp.cpp b/code/Common/Assimp.cpp
index 91896e4059..22e16bd36a 100644
--- a/code/Common/Assimp.cpp
+++ b/code/Common/Assimp.cpp
@@ -416,6 +416,10 @@ ASSIMP_API aiReturn aiDetachLogStream(const aiLogStream 
*stream) {
     DefaultLogger::get()->detachStream(it->second);
     delete it->second;
 
+    if ((Assimp::LogStream *)stream->user == DefaultStream) {
+        DefaultStream = nullptr;
+    }
+
     gActiveLogStreams.erase(it);
 
     if (gActiveLogStreams.empty()) {

++++++ CVE-2024-48424.patch ++++++
>From 2b773f0f5a726c38dda72307b5311c14fc3a76ae Mon Sep 17 00:00:00 2001
From: tyler92 <tyle...@inbox.ru>
Date: Mon, 16 Dec 2024 23:48:45 +0200
Subject: [PATCH] Fix heap-buffer-overflow in OpenDDLParser (#5919)

Co-authored-by: Kim Kulling <kimkull...@users.noreply.github.com>
---
 contrib/openddlparser/code/OpenDDLParser.cpp | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/contrib/openddlparser/code/OpenDDLParser.cpp 
b/contrib/openddlparser/code/OpenDDLParser.cpp
index 3d7dce45ec..26591b5ec8 100644
--- a/contrib/openddlparser/code/OpenDDLParser.cpp
+++ b/contrib/openddlparser/code/OpenDDLParser.cpp
@@ -74,12 +74,11 @@ const char *getTypeToken(Value::ValueType type) {
     return Grammar::PrimitiveTypeToken[(size_t)type];
 }
 
-static void logInvalidTokenError(const char *in, const std::string &exp, 
OpenDDLParser::logCallback callback) {
-    if (callback) {
-        std::string full(in);
-        std::string part(full.substr(0, 50));
+static void logInvalidTokenError(const std::string &in, const std::string 
&exp, OpenDDLParser::logCallback callback) {
+    if (callback) {\
+        std::string part(in.substr(0, 50));
         std::stringstream stream;
-        stream << "Invalid token \"" << *in << "\" "
+        stream << "Invalid token \"" << in << "\" "
                << "(expected \"" << exp << "\") "
                << "in: \"" << part << "\"";
         callback(ddl_error_msg, stream.str());
@@ -306,7 +305,7 @@ char *OpenDDLParser::parseHeader(char *in, char *end) {
                 }
 
                 if (*in != Grammar::CommaSeparator[0] && *in != 
Grammar::ClosePropertyToken[0]) {
-                    logInvalidTokenError(in, Grammar::ClosePropertyToken, 
m_logCallback);
+                    logInvalidTokenError(std::string(in, end), 
Grammar::ClosePropertyToken, m_logCallback);
                     return nullptr;
                 }
 
@@ -355,8 +354,7 @@ char *OpenDDLParser::parseStructure(char *in, char *end) {
                 ++in;
             }
         } else {
-            ++in;
-            logInvalidTokenError(in, std::string(Grammar::OpenBracketToken), 
m_logCallback);
+            logInvalidTokenError(std::string(in, end), 
std::string(Grammar::OpenBracketToken), m_logCallback);
             error = true;
             return nullptr;
         }
@@ -427,7 +425,7 @@ char *OpenDDLParser::parseStructureBody(char *in, char 
*end, bool &error) {
 
         in = lookForNextToken(in, end);
         if (in == end || *in != '}') {
-            logInvalidTokenError(in == end ? "" : in, 
std::string(Grammar::CloseBracketToken), m_logCallback);
+            logInvalidTokenError(std::string(in, end), 
std::string(Grammar::CloseBracketToken), m_logCallback);
             return nullptr;
         } else {
             //in++;

++++++ CVE-2024-53425.patch ++++++
>From ecc8a1c8695560df108d6adc00b3d7b1ba15df9f Mon Sep 17 00:00:00 2001
From: tyler92 <tyle...@inbox.ru>
Date: Tue, 17 Dec 2024 19:57:54 +0200
Subject: [PATCH] Fix buffer overflow in MD5Parser::SkipSpacesAndLineEnd
 (#5921)

Co-authored-by: Kim Kulling <kimkull...@users.noreply.github.com>
---
 code/AssetLib/MD5/MD5Parser.cpp | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/code/AssetLib/MD5/MD5Parser.cpp b/code/AssetLib/MD5/MD5Parser.cpp
index 2de8d5033c..c5f108586e 100644
--- a/code/AssetLib/MD5/MD5Parser.cpp
+++ b/code/AssetLib/MD5/MD5Parser.cpp
@@ -115,14 +115,18 @@ void MD5Parser::ParseHeader() {
         ReportError("MD5 version tag is unknown (10 is expected)");
     }
     SkipLine();
-    if (buffer == bufferEnd) {
-        return;
-    }
 
     // print the command line options to the console
-    // FIX: can break the log length limit, so we need to be careful
     char *sz = buffer;
-    while (!IsLineEnd(*buffer++));
+    while (buffer < bufferEnd) {
+        if (IsLineEnd(*buffer++)) {
+            break;
+        }
+    }
+
+    if (buffer == bufferEnd) {
+        return;
+    }
     
     ASSIMP_LOG_INFO(std::string(sz, 
std::min((uintptr_t)MAX_LOG_MESSAGE_LENGTH, (uintptr_t)(buffer - sz))));
     SkipSpacesAndLineEnd();

Reply via email to