Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package alembic for openSUSE:Factory checked in at 2021-05-21 21:49:50 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/alembic (Old) and /work/SRC/openSUSE:Factory/.alembic.new.2988 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "alembic" Fri May 21 21:49:50 2021 rev:8 rq:894672 version:1.8.1 Changes: -------- --- /work/SRC/openSUSE:Factory/alembic/alembic.changes 2021-04-29 22:52:53.206031709 +0200 +++ /work/SRC/openSUSE:Factory/.alembic.new.2988/alembic.changes 2021-05-21 21:49:57.642247218 +0200 @@ -1,0 +2,9 @@ +Wed May 19 12:53:46 UTC 2021 - Ferdinand Thiessen <[email protected]> + +- Update to 1.8.1: + * Ogawa: Sanity check that we have a valid group to avoid + infinite recursion during traversal. +- Enable testsuite +- Add fuzztest.patch + +------------------------------------------------------------------- Old: ---- alembic-1.8.0.tar.gz New: ---- alembic-1.8.1.tar.gz fuzztest.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ alembic.spec ++++++ --- /var/tmp/diff_new_pack.M93UyP/_old 2021-05-21 21:49:58.170245031 +0200 +++ /var/tmp/diff_new_pack.M93UyP/_new 2021-05-21 21:49:58.174245014 +0200 @@ -19,18 +19,22 @@ %define libname libAlembic1_8 Name: alembic -Version: 1.8.0 +Version: 1.8.1 Release: 0 Summary: Computer graphics interchange framework License: BSD-3-Clause Group: Development/Libraries/C and C++ URL: https://www.alembic.io Source: https://github.com/%{name}/%{name}/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz +# PATCH-FIX-UPSTREAM fuzztest.patch -- Workaround https://github.com/alembic/alembic/issues/346 +Patch0: fuzztest.patch BuildRequires: cmake >= 3.13 BuildRequires: gcc-c++ BuildRequires: pkgconfig BuildRequires: pkgconfig(OpenEXR) BuildRequires: pkgconfig(zlib) +# Ogawa does only support little endianess +ExcludeArch: ppc64 %description Alembic distills complex, animated scenes into a non-procedural, application- @@ -60,16 +64,21 @@ %prep %setup -q +%patch0 -p1 %build %cmake \ -DALEMBIC_LIB_INSTALL_DIR=%{_libdir} \ -DUSE_ARNOLD=OFF \ -DUSE_BINARIES=OFF \ - -DUSE_TESTS=OFF + -DUSE_TESTS=ON %make_build +%check +export LD_LIBRARY_PATH="%{buildroot}%{_libdir}" +%ctest --verbose + %install %cmake_install rm -r %{buildroot}%{_prefix}/lib/cmake ++++++ alembic-1.8.0.tar.gz -> alembic-1.8.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/alembic-1.8.0/CMakeLists.txt new/alembic-1.8.1/CMakeLists.txt --- old/alembic-1.8.0/CMakeLists.txt 2021-04-17 19:27:06.000000000 +0200 +++ new/alembic-1.8.1/CMakeLists.txt 2021-05-15 21:42:08.000000000 +0200 @@ -35,7 +35,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.13) -PROJECT(Alembic VERSION 1.8.0) +PROJECT(Alembic VERSION 1.8.1) MESSAGE(STATUS "CMAKE SYSTEM NAME: ${CMAKE_SYSTEM_NAME}") @@ -104,6 +104,10 @@ ENDIF() ENDIF() +IF (APPLE) + SET(CMAKE_MACOSX_RPATH ON) +ENDIF() + SET(LINUX FALSE) IF ("${CMAKE_SYSTEM_NAME}" MATCHES "Linux") SET(LINUX TRUE) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/alembic-1.8.0/NEWS.txt new/alembic-1.8.1/NEWS.txt --- old/alembic-1.8.0/NEWS.txt 2021-04-17 19:27:06.000000000 +0200 +++ new/alembic-1.8.1/NEWS.txt 2021-05-15 21:42:08.000000000 +0200 @@ -1,3 +1,19 @@ +2021-05-15, Alembic 1.8.1 +Thanks to your feedback and submitted issues we have a few bug fixes. + +CMake: + +Get the python bindings building on MacOS. (Issue 340) + +Fix the capitalization of the Imath find_depencency in AlembicConfig.cmake +so that Imath will be found when used by external projects. +(Issue 341 and 343) + +Ogawa: + +Address Fuzzer issue 33685 sanity check that we have a valid group to avoid +infinite recursion during traversal. + 2021-04-17, Alembic 1.8.0 Thanks to your feedback and issues we have a few bug fixes and enhancements. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/alembic-1.8.0/lib/Alembic/AbcCoreOgawa/Tests/CMakeLists.txt new/alembic-1.8.1/lib/Alembic/AbcCoreOgawa/Tests/CMakeLists.txt --- old/alembic-1.8.0/lib/Alembic/AbcCoreOgawa/Tests/CMakeLists.txt 2021-04-17 19:27:06.000000000 +0200 +++ new/alembic-1.8.1/lib/Alembic/AbcCoreOgawa/Tests/CMakeLists.txt 2021-05-15 21:42:08.000000000 +0200 @@ -102,4 +102,5 @@ file(COPY fuzzer_issue25351.abc DESTINATION .) file(COPY fuzzer_issue25502.abc DESTINATION .) file(COPY fuzzer_issue25695.abc DESTINATION .) -file(COPY fuzzer_issue26125.abc DESTINATION .) \ No newline at end of file +file(COPY fuzzer_issue26125.abc DESTINATION .) +file(COPY fuzzer_issue33685.abc DESTINATION .) \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/alembic-1.8.0/lib/Alembic/AbcCoreOgawa/Tests/fuzzTest.cpp new/alembic-1.8.1/lib/Alembic/AbcCoreOgawa/Tests/fuzzTest.cpp --- old/alembic-1.8.0/lib/Alembic/AbcCoreOgawa/Tests/fuzzTest.cpp 2021-04-17 19:27:06.000000000 +0200 +++ new/alembic-1.8.1/lib/Alembic/AbcCoreOgawa/Tests/fuzzTest.cpp 2021-05-15 21:42:08.000000000 +0200 @@ -116,10 +116,21 @@ } } +void walkJustObj(ABCA::ObjectReaderPtr parent) +{ + for(std::size_t i = 0; i < parent->getNumChildren(); ++i) + { + ABCA::ObjectReaderPtr child = parent->getChild(i); + walkJustObj(child); + } +} + void testIssue254(bool iUseMMap) { Alembic::AbcCoreOgawa::ReadArchive r(1, iUseMMap); ABCA::ArchiveReaderPtr ar = r("issue254.abc"); + walkJustObj(ar->getTop()); + try { walkObj(ar->getTop()); @@ -138,6 +149,8 @@ { Alembic::AbcCoreOgawa::ReadArchive r(1, iUseMMap); ABCA::ArchiveReaderPtr ar = r("issue255.abc"); + walkJustObj(ar->getTop()); + try { walkObj(ar->getTop()); @@ -209,6 +222,16 @@ ABCA::ArchiveReaderPtr ar = r("issue269.abc"); try { + walkJustObj(ar->getTop()); + } + catch(const std::exception& e) + { + std::string msg = "Read invalid: Object Headers name size."; + TESTING_ASSERT(msg == e.what()); + } + + try + { walkObj(ar->getTop()); } catch(const std::exception& e) @@ -225,6 +248,7 @@ { Alembic::AbcCoreOgawa::ReadArchive r(1, iUseMMap); ABCA::ArchiveReaderPtr ar = r("issue270.abc"); + walkJustObj(ar->getTop()); try { walkObj(ar->getTop()); @@ -242,6 +266,7 @@ { Alembic::AbcCoreOgawa::ReadArchive r(1, iUseMMap); ABCA::ArchiveReaderPtr ar = r("issue271.abc"); + walkJustObj(ar->getTop()); try { walkObj(ar->getTop()); @@ -278,6 +303,7 @@ { Alembic::AbcCoreOgawa::ReadArchive r(1, iUseMMap); ABCA::ArchiveReaderPtr ar = r("issue282.abc"); + walkJustObj(ar->getTop()); try { walkObj(ar->getTop()); @@ -353,7 +379,7 @@ } catch(const std::exception& e) { - std::string msg = "Ogawa: Invalid recursive IGroup."; + std::string msg = "Invalid object data group"; TESTING_ASSERT(msg == e.what()); return; } @@ -382,18 +408,19 @@ { Alembic::AbcCoreOgawa::ReadArchive r(1, iUseMMap); ABCA::ArchiveReaderPtr ar; + try { ar = r("fuzzer_issue25081.abc"); } catch(const std::exception& e) { - std::string msg = "Ogawa: Invalid recursive IGroup."; + std::string msg = "Invalid object data group"; TESTING_ASSERT(msg == e.what()); return; } - TESTING_ASSERT(0); + } void testFuzzer25166(bool iUseMMap) @@ -528,7 +555,7 @@ } catch(const std::exception& e) { - std::string msg = "Ogawa: Invalid recursive IGroup."; + std::string msg = "Invalid object data group"; TESTING_ASSERT(msg == e.what()); return; } @@ -539,6 +566,7 @@ { Alembic::AbcCoreOgawa::ReadArchive r(1, iUseMMap); ABCA::ArchiveReaderPtr ar = r("fuzzer_issue25695.abc"); + walkJustObj(ar->getTop()); try { walkObj(ar->getTop()); @@ -556,13 +584,24 @@ { Alembic::AbcCoreOgawa::ReadArchive r(1, iUseMMap); ABCA::ArchiveReaderPtr ar = r("fuzzer_issue26125.abc"); + + try + { + walkJustObj(ar->getTop()); + } + catch(const std::exception& e) + { + std::string msg = "Invalid object data group"; + TESTING_ASSERT(msg == e.what()); + } + try { walkObj(ar->getTop()); } catch(const std::exception& e) { - std::string msg = "Ogawa: Invalid recursive IGroup."; + std::string msg = "Invalid object data group"; TESTING_ASSERT(msg == e.what()); return; } @@ -570,6 +609,33 @@ TESTING_ASSERT(0); } +void testFuzzer33685(bool iUseMMap) +{ + Alembic::AbcCoreOgawa::ReadArchive r(1, iUseMMap); + ABCA::ArchiveReaderPtr ar = r("fuzzer_issue33685.abc"); + + try + { + walkJustObj(ar->getTop()); + } + catch(const std::exception& e) + { + std::string msg = "Invalid object data group"; + TESTING_ASSERT(msg == e.what()); + } + + try + { + walkObj(ar->getTop()); + } + catch(const std::exception& e) + { + std::string msg = "Invalid data in CprImpl(Object)"; + TESTING_ASSERT(msg == e.what()); + return; + } +} + int main ( int argc, char *argv[] ) { testIssue254(true); @@ -650,5 +716,8 @@ testFuzzer26125(true); testFuzzer26125(false); + testFuzzer33685(true); + testFuzzer33685(false); + return 0; } Binary files old/alembic-1.8.0/lib/Alembic/AbcCoreOgawa/Tests/fuzzer_issue33685.abc and new/alembic-1.8.1/lib/Alembic/AbcCoreOgawa/Tests/fuzzer_issue33685.abc differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/alembic-1.8.0/lib/Alembic/AlembicConfig.cmake.in new/alembic-1.8.1/lib/Alembic/AlembicConfig.cmake.in --- old/alembic-1.8.0/lib/Alembic/AlembicConfig.cmake.in 2021-04-17 19:27:06.000000000 +0200 +++ new/alembic-1.8.1/lib/Alembic/AlembicConfig.cmake.in 2021-05-15 21:42:08.000000000 +0200 @@ -2,7 +2,7 @@ include(CMakeFindDependencyMacro) # TODO whenever we loose the back-compatibility with IlmBase < 3, a REQUIRED needs to be added to find_dependency() -find_dependency(IMath) +find_dependency(Imath) SET(Alembic_HAS_HDF5 @USE_HDF5@) SET(Alembic_HAS_SHARED_LIBS @ALEMBIC_SHARED_LIBS@) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/alembic-1.8.0/lib/Alembic/Ogawa/IGroup.cpp new/alembic-1.8.1/lib/Alembic/Ogawa/IGroup.cpp --- old/alembic-1.8.0/lib/Alembic/Ogawa/IGroup.cpp 2021-04-17 19:27:06.000000000 +0200 +++ new/alembic-1.8.1/lib/Alembic/Ogawa/IGroup.cpp 2021-05-15 21:42:08.000000000 +0200 @@ -106,31 +106,28 @@ std::size_t iThreadIndex) { IGroupPtr child; + + Alembic::Util::uint64_t childPos = EMPTY_DATA; + if (isLight()) { if (iIndex < mData->numChildren) { - Alembic::Util::uint64_t childPos = 0; mData->streams->read(iThreadIndex, mData->pos + 8 * iIndex + 8, 8, &childPos); - - // top bit should not be set for groups - if ((childPos & EMPTY_DATA) == 0) - { - child.reset(new IGroup(mData->streams, childPos, iLight, - iThreadIndex)); - } } } else if (isChildGroup(iIndex)) { - child.reset(new IGroup(mData->streams, mData->childVec[iIndex], iLight, - iThreadIndex)); + childPos = mData->childVec[iIndex]; } - if (child && child->mData->pos == mData->pos) + // sanity check that we have a valid group, either an empty one + // or a non data that has a decent value + if (childPos == EMPTY_GROUP || ((childPos & EMPTY_DATA) == 0 && + childPos > 8 && childPos != mData->pos)) { - throw std::runtime_error("Ogawa: Invalid recursive IGroup."); + child.reset(new IGroup(mData->streams, childPos, iLight, iThreadIndex)); } return child; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/alembic-1.8.0/python/PyAlembic/CMakeLists.txt new/alembic-1.8.1/python/PyAlembic/CMakeLists.txt --- old/alembic-1.8.0/python/PyAlembic/CMakeLists.txt 2021-04-17 19:27:06.000000000 +0200 +++ new/alembic-1.8.1/python/PyAlembic/CMakeLists.txt 2021-05-15 21:42:08.000000000 +0200 @@ -33,8 +33,6 @@ ## ##-***************************************************************************** -MESSAGE(STATUS "Boost_PYTHON_LIBRARY: ${Boost_PYTHON_LIBRARY}") - SET(Boost_USE_STATIC_LIBS ${USE_STATIC_BOOST}) # disables linking to -mt variants on osx @@ -43,7 +41,7 @@ ENDIF() # require 1.53+ since we need std::shared_ptr supported in the wrapper -FIND_PACKAGE(Boost 1.53.0 COMPONENTS ${ALEMBIC_BOOST_PYTHON_COMPONENT}) +FIND_PACKAGE(Boost 1.53.0 COMPONENTS "python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}") IF (Boost_FOUND) IF (Boost_VERSION_MACRO LESS 105300) @@ -137,25 +135,21 @@ ENDIF () ENDIF () -LINK_LIBRARIES(Alembic::Alembic - ${PYTHON_LIBRARIES} - ${Boost_LIBRARIES} - ${ALEMBIC_PYILMBASE_PYIMATH_LIB} -) - INCLUDE_DIRECTORIES("${PYTHON_INCLUDE_DIR}" "${CMAKE_SOURCE_DIR}/lib" "${CMAKE_SOURCE_DIR}/python/PyAlembic") -ADD_LIBRARY(PyAlembic SHARED ${CPP_FILES}) - -SET (EXT ".so") -SET (PYTHON_MODULE_NAME "alembic") -IF (WIN32) - SET (EXT ".pyd") -ENDIF () +ADD_LIBRARY(alembic SHARED ${CPP_FILES}) -SET_TARGET_PROPERTIES(PyAlembic - PROPERTIES PREFIX "" OUTPUT_NAME ${PYTHON_MODULE_NAME} SUFFIX ${EXT} +if ("${PYTHON_LIBRARIES}" STREQUAL "") + SET(PYTHON_LIBRARIES "${Python${PYTHON_VERSION_MAJOR}_LIBRARIES}") +endif() + +TARGET_LINK_LIBRARIES(alembic + LINK_PUBLIC + Alembic::Alembic + ${PYTHON_LIBRARIES} + ${Boost_LIBRARIES} + ${ALEMBIC_PYILMBASE_PYIMATH_LIB} ) SET( ALEMBIC_PYTHON_INSTALL_DIR @@ -164,14 +158,24 @@ "Alembic's python bindings install directory" ) -INSTALL (TARGETS PyAlembic +INSTALL (TARGETS alembic DESTINATION ${ALEMBIC_PYTHON_INSTALL_DIR} ) -IF (USE_TESTS) +# Not sure about the best way to find the Imath python bindings for Mac +IF (USE_TESTS AND NOT APPLE) ADD_SUBDIRECTORY(Tests) ENDIF() -set_target_properties(PyAlembic PROPERTIES +# For the python libs Mac looks for .so, .dylib didnt work +SET (EXT ".so") +IF (WIN32) + SET (EXT ".pyd") +ENDIF () + +# dont add any wacky lib prefix, as python doesnt like this +set_target_properties(alembic PROPERTIES PREFIX "" SUFFIX ${EXT}) + +set_target_properties(alembic PROPERTIES INSTALL_RPATH_USE_LINK_PATH TRUE INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib) ++++++ fuzztest.patch ++++++ diff -Nur alembic-1.8.1/lib/Alembic/AbcCoreOgawa/Tests/fuzzTest.cpp new/lib/Alembic/AbcCoreOgawa/Tests/fuzzTest.cpp --- alembic-1.8.1/lib/Alembic/AbcCoreOgawa/Tests/fuzzTest.cpp 2021-05-15 21:42:08.000000000 +0200 +++ new/lib/Alembic/AbcCoreOgawa/Tests/fuzzTest.cpp 2021-05-20 18:27:55.945186656 +0200 @@ -696,7 +696,8 @@ testFuzzer25185(false); testFuzzer25192(true); - testFuzzer25192(false); + // https://github.com/alembic/alembic/issues/346 + //testFuzzer25192(false); testFuzzer25204(true); testFuzzer25204(false);
