diff --git a/0017-Increase-sleep-for-tests.patch b/0017-Increase-sleep-for-tests.patch new file mode 100644 index 0000000000000000000000000000000000000000..7382801062be5ece4b99de4cfe10e0be2073f138 --- /dev/null +++ b/0017-Increase-sleep-for-tests.patch @@ -0,0 +1,73 @@ +From ee3d49874fd861472bbffedf09b186fc6d8ce83d Mon Sep 17 00:00:00 2001 +From: "Ankur Sinha (Ankur Sinha Gmail)" +Date: Tue, 2 Aug 2022 20:50:43 +0100 +Subject: [PATCH 17/18] Increase sleep for tests + +--- + dcmnet/tests/tscusession.cc | 6 +++--- + dcmtls/tests/tscuscptls.cc | 6 +++--- + 2 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/dcmnet/tests/tscusession.cc b/dcmnet/tests/tscusession.cc +index 08a24dbbf..4d3020208 100644 +--- a/dcmnet/tests/tscusession.cc ++++ b/dcmnet/tests/tscusession.cc +@@ -280,7 +280,7 @@ void configure_scp_for_sop_class(DcmSCPConfig& cfg, + void scu_session(const OFString& called_ae_title, const OFString& sop_class) + { + // Make sure server is up +- force_sleep(1); ++ force_sleep(10); + // Basic configuration + SessionSCU scu; + scu.setAETitle("TEST_SCU"); +@@ -334,13 +334,13 @@ OFTEST_FLAGS(dcmnet_scu_session_handler, EF_Slow) + + // Send FIND, and wait to be sure SCP has time to exit + scu_session("FIND_SESSION", UID_FINDPatientRootQueryRetrieveInformationModel); +- force_sleep(1); ++ force_sleep(10); + scp.join(); + + // Send MOVE, and wait to be sure SCP has time to exit + scp.start(); + scu_session("MOVE_SESSION", UID_MOVEPatientRootQueryRetrieveInformationModel); +- force_sleep(1); ++ force_sleep(10); + scp.join(); + + // TODO: Test C-GET +diff --git a/dcmtls/tests/tscuscptls.cc b/dcmtls/tests/tscuscptls.cc +index d895da7af..ed8f35883 100644 +--- a/dcmtls/tests/tscuscptls.cc ++++ b/dcmtls/tests/tscuscptls.cc +@@ -347,7 +347,7 @@ OFTEST_FLAGS(dcmtls_scp_tls, EF_None) + port_number = 0xF000 + (rnd.getRND16() & 0xFFF); + config.setPort(port_number); + scp.start(); +- force_sleep(2); // wait 2 seconds for the SCP process to start ++ force_sleep(10); // wait 10 seconds for the SCP process to start + memory_barrier.lock(); + memory_barrier.unlock(); + } +@@ -429,7 +429,7 @@ OFTEST_FLAGS(dcmtls_scp_pool_tls, EF_None) + port_number = 0xF000 + (rnd.getRND16() & 0xFFF); + config.setPort(port_number); + pool.start(); +- force_sleep(2); // wait 2 seconds for the SCP process to start ++ force_sleep(10); // wait 10 seconds for the SCP process to start + memory_barrier.lock(); + memory_barrier.unlock(); + } +@@ -460,7 +460,7 @@ OFTEST_FLAGS(dcmtls_scp_pool_tls, EF_None) + + // "ensure" the pool is initialized before any SCU starts connecting to it. The initialization + // can take a couple of seconds on older systems, e.g. debian i368. +- force_sleep(5); ++ force_sleep(15); + + for (OFVector::const_iterator it2 = scus.begin(); it2 != scus.end(); ++it2) + { +-- +2.39.2 + diff --git a/0018-CVE-2022-43272-Fixed-memory-leak-in-single-process-mode.patch b/0018-CVE-2022-43272-Fixed-memory-leak-in-single-process-mode.patch new file mode 100644 index 0000000000000000000000000000000000000000..c833d99bcb5b41fa47268a91481d518d4144b442 --- /dev/null +++ b/0018-CVE-2022-43272-Fixed-memory-leak-in-single-process-mode.patch @@ -0,0 +1,61 @@ +From cd73ffc250bf6472afdd17170eb688243701f860 Mon Sep 17 00:00:00 2001 +From: Marco Eichelberg +Date: Thu, 9 Jun 2022 10:03:38 +0200 +Subject: [PATCH 18/18] [CVE-2022-43272] Fixed memory leak in single process + mode. + +Fixed a memory leak in dcmqrscp's single process mode. + +Thanks to for the bug report and test data. + +(cherry picked from commit c34f4e46e672ad21accf04da0dc085e43be6f5e1) +--- + dcmqrdb/libsrc/dcmqrsrv.cc | 24 ++++++++++-------------- + 1 file changed, 10 insertions(+), 14 deletions(-) + +diff --git a/dcmqrdb/libsrc/dcmqrsrv.cc b/dcmqrdb/libsrc/dcmqrsrv.cc +index 157e6c022..f5f9df661 100644 +--- a/dcmqrdb/libsrc/dcmqrsrv.cc ++++ b/dcmqrdb/libsrc/dcmqrsrv.cc +@@ -1,6 +1,6 @@ + /* + * +- * Copyright (C) 1993-2021, OFFIS e.V. ++ * Copyright (C) 1993-2022, OFFIS e.V. + * All rights reserved. See COPYRIGHT file for details. + * + * This software and supporting documentation were developed by +@@ -1126,21 +1126,17 @@ OFCondition DcmQueryRetrieveSCP::waitForAssociation(T_ASC_Network * theNet) + #endif + } + +- // cleanup code ++ // clean-up association + OFCondition oldcond = cond; /* store condition flag for later use */ +- if (!options_.singleProcess_ && (cond != ASC_SHUTDOWNAPPLICATION)) ++ cond = ASC_dropAssociation(assoc); ++ if (cond.bad()) + { +- /* the child will handle the association, we can drop it */ +- cond = ASC_dropAssociation(assoc); +- if (cond.bad()) +- { +- DCMQRDB_ERROR("Cannot Drop Association: " << DimseCondition::dump(temp_str, cond)); +- } +- cond = ASC_destroyAssociation(&assoc); +- if (cond.bad()) +- { +- DCMQRDB_ERROR("Cannot Destroy Association: " << DimseCondition::dump(temp_str, cond)); +- } ++ DCMQRDB_ERROR("Cannot Drop Association: " << DimseCondition::dump(temp_str, cond)); ++ } ++ cond = ASC_destroyAssociation(&assoc); ++ if (cond.bad()) ++ { ++ DCMQRDB_ERROR("Cannot Destroy Association: " << DimseCondition::dump(temp_str, cond)); + } + + if (oldcond == ASC_SHUTDOWNAPPLICATION) cond = oldcond; /* abort flag is reported to top-level wait loop */ +-- +2.39.2 + diff --git a/dcmtk-3.6.7.tar.gz b/dcmtk-3.6.7.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..57c08e08976e1f95aa7a1a90cb5390b51a35ead5 Binary files /dev/null and b/dcmtk-3.6.7.tar.gz differ diff --git a/dcmtk.spec b/dcmtk.spec new file mode 100644 index 0000000000000000000000000000000000000000..d643d7ffa0e8044cb2b06a0fd4079a13cc6c9f2d --- /dev/null +++ b/dcmtk.spec @@ -0,0 +1,231 @@ +%global abi_version 17 + +%bcond_with charls2 + +Name: dcmtk +Summary: Offis DICOM Toolkit (DCMTK) +Version: 3.6.7 + +%global soname_version %{abi_version}.%{version} + +Release: 1%{?dist} +License: BSD +Source: https://dicom.offis.de/download/dcmtk/dcmtk367/dcmtk-3.6.7.tar.gz +URL: http://dicom.offis.de/dcmtk.php.en + +%if %{with charls2} +Patch: 0001-Use-system-CharLS-include.patch +Patch: 0002-Add-FindCharLS.patch +Patch: 0003-Find-and-include-CharLS.patch +Patch: 0004-Use-cmake-suggested-locations-for-CharLS.patch +Patch: 0005-Correct-CharLS-API-call.patch +Patch: 0006-Remove-reference-to-bundled-CharLS.patch +Patch: 0007-Update-JLS_ERROR-to-jpegls_error-in-CharLS-usage.patch +Patch: 0008-Correct-JpegLsReadHeader-arguments.patch +Patch: 0009-Update-JlsParameters-for-new-CharLS.patch +Patch: 0010-Correct-JpegLsDecode-arguments-for-CharLS-2.patch +Patch: 0011-Update-ilv-for-new-CharLS.patch +Patch: 0012-Correct-extra-include-for-CharLS.patch +Patch: 0013-Update-errors-to-use-enum-class-in-CharLS-2.patch +Patch: 0014-Define-BYTE-for-CharLS.patch +Patch: 0015-Update-colorTransformation-for-CharLS-2.patch +Patch: 0016-Update-JpegLsEncode-for-CharLS-2.patch +%endif +Patch: 0017-Increase-sleep-for-tests.patch + +Patch: 0018-CVE-2022-43272-Fixed-memory-leak-in-single-process-mode.patch + +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: git-core +BuildRequires: cmake +BuildRequires: libjpeg-devel +BuildRequires: libpng-devel +BuildRequires: libtiff-devel +BuildRequires: libxml2-devel +BuildRequires: openssl-devel >= 1.0.1 +BuildRequires: zlib-devel +%if %{with charls2} +BuildRequires: CharLS-devel >= 2.0.0 +%endif +BuildRequires: doxygen + +%description +DCMTK is a collection of libraries and applications implementing large +parts the DICOM standard. It includes software for examining, +constructing and converting DICOM image files, handling offline media, +sending and receiving images over a network connection, as well as +demonstrative image storage and worklist servers. DCMTK is is written +in a mixture of ANSI C and C++. It comes in complete source code and +is made available as "open source" software. This package includes +multiple fixes taken from the "patched DCMTK" project. + +Install DCMTK if you are working with DICOM format medical image files. + +%package devel +Summary: Development Libraries and Headers for dcmtk +Requires: %{name}%{?_isa} = %{version}-%{release} +%if %{with charls2} +Requires: CharLS-devel%{?_isa} +%endif +Requires: libpng-devel%{?_isa} +Requires: libtiff-devel%{?_isa} + +%description devel +Development Libraries and Headers for dcmtk. You only need to install +this if you are developing programs that use the dcmtk libraries. + +%prep +%autosetup -n %{name}-%{version} -p1 -S git + +%if %{with charls2} +# Remove bundled libraries +rm -rf dcmjpls/libcharls/ +%endif + +# Fix permissions +find . -type f -name "*.h" -exec chmod 0644 '{}' \; +find . -type f -name "*.cc" -exec chmod 0644 '{}' \; + +%build +export CFLAGS="%{optflags} -fPIC -Wno-error=deprecated-declarations" +export CXXFLAGS="%{optflags} -fPIC -Wno-error=deprecated-declarations" +export LDFLAGS="%{__global_ldflags} -fPIC" +%cmake -DCMAKE_BUILD_TYPE:STRING="Release" \ + -DDCMTK_INSTALL_LIBDIR=%{_lib} \ + -DDCMTK_INSTALL_CMKDIR=%{_lib}/cmake/%{name} \ + -DCMAKE_INSTALL_DOCDIR:PATH=%{_pkgdocdir} \ + -DCMAKE_INSTALL_INCLUDEDIR:PATH=include \ + -DCMAKE_INSTALL_MANDIR:PATH=%{_mandir} \ + -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \ + -DCMAKE_INSTALL_SYSCONFDIR:PATH=%{_sysconfdir} \ + -DCMAKE_INSTALL_DATADIR:PATH=share \ + -DBUILD_APPS:BOOL=ON \ + -DBUILD_SHARED_LIBS:BOOL=ON \ + -DBUILD_SINGLE_SHARED_LIBRARY:BOOL=OFF \ + -DDCMTK_WITH_OPENSSL:BOOL=ON \ + -DDCMTK_WITH_PNG:BOOL=ON \ + -DDCMTK_WITH_PRIVATE_TAGS:BOOL=ON \ + -DDCMTK_WITH_TIFF:BOOL=ON \ + -DDCMTK_WITH_XML:BOOL=ON \ + -DDCMTK_WITH_CHARLS:BOOL=ON \ + -DDCMTK_WITH_ZLIB:BOOL=ON \ + -DDCMTK_ENABLE_CXX11:BOOL=ON \ + -Wno-dev +%cmake_build + +%install +%cmake_install + +# Remove zero-lenght file +rm -f $RPM_BUILD_ROOT%{_datadir}/%{name}/wlistdb/OFFIS/lockfile + +%ldconfig_scriptlets + +%check +%ctest + +%files +%license COPYRIGHT +%{_pkgdocdir}/ +%{_bindir}/* +%{_libdir}/libdcmfg.so.%{soname_version} +%{_libdir}/libcmr.so.%{abi_version} +%{_libdir}/libcmr.so.%{soname_version} +%{_libdir}/libdcmdata.so.%{abi_version} +%{_libdir}/libdcmdata.so.%{soname_version} +%{_libdir}/libdcmdsig.so.%{abi_version} +%{_libdir}/libdcmdsig.so.%{soname_version} +%{_libdir}/libdcmect.so.%{abi_version} +%{_libdir}/libdcmect.so.%{soname_version} +%{_libdir}/libdcmfg.so.%{abi_version} +%{_libdir}/libdcmimage.so.%{abi_version} +%{_libdir}/libdcmimage.so.%{soname_version} +%{_libdir}/libdcmimgle.so.%{abi_version} +%{_libdir}/libdcmimgle.so.%{soname_version} +%{_libdir}/libdcmiod.so.%{abi_version} +%{_libdir}/libdcmiod.so.%{soname_version} +%{_libdir}/libdcmjpeg.so.%{abi_version} +%{_libdir}/libdcmjpeg.so.%{soname_version} +%{_libdir}/libdcmjpls.so.%{abi_version} +%{_libdir}/libdcmjpls.so.%{soname_version} +%{_libdir}/libdcmnet.so.%{abi_version} +%{_libdir}/libdcmnet.so.%{soname_version} +%{_libdir}/libdcmpmap.so.%{abi_version} +%{_libdir}/libdcmpmap.so.%{soname_version} +%{_libdir}/libdcmpstat.so.%{abi_version} +%{_libdir}/libdcmpstat.so.%{soname_version} +%{_libdir}/libdcmqrdb.so.%{abi_version} +%{_libdir}/libdcmqrdb.so.%{soname_version} +%{_libdir}/libdcmrt.so.%{abi_version} +%{_libdir}/libdcmrt.so.%{soname_version} +%{_libdir}/libdcmseg.so.%{abi_version} +%{_libdir}/libdcmseg.so.%{soname_version} +%{_libdir}/libdcmsr.so.%{abi_version} +%{_libdir}/libdcmsr.so.%{soname_version} +%{_libdir}/libdcmtkcharls.so.%{abi_version} +%{_libdir}/libdcmtkcharls.so.%{soname_version} +%{_libdir}/libdcmtls.so.%{abi_version} +%{_libdir}/libdcmtls.so.%{soname_version} +%{_libdir}/libdcmtract.so.%{abi_version} +%{_libdir}/libdcmtract.so.%{soname_version} +%{_libdir}/libdcmwlm.so.%{abi_version} +%{_libdir}/libdcmwlm.so.%{soname_version} +%{_libdir}/libi2d.so.%{abi_version} +%{_libdir}/libi2d.so.%{soname_version} +%{_libdir}/libijg16.so.%{abi_version} +%{_libdir}/libijg16.so.%{soname_version} +%{_libdir}/libijg12.so.%{abi_version} +%{_libdir}/libijg12.so.%{soname_version} +%{_libdir}/libijg8.so.%{abi_version} +%{_libdir}/libijg8.so.%{soname_version} +%{_libdir}/liboflog.so.%{abi_version} +%{_libdir}/liboflog.so.%{soname_version} +%{_libdir}/libofstd.so.%{abi_version} +%{_libdir}/libofstd.so.%{soname_version} +%dir %{_sysconfdir}/%{name} +%config(noreplace) %{_sysconfdir}/%{name}/dcmpstat.cfg +%config(noreplace) %{_sysconfdir}/%{name}/dcmqrscp.cfg +%config(noreplace) %{_sysconfdir}/%{name}/printers.cfg +%config(noreplace) %{_sysconfdir}/%{name}/storescp.cfg +%config(noreplace) %{_sysconfdir}/%{name}/storescu.cfg +%config(noreplace) %{_sysconfdir}/%{name}/filelog.cfg +%config(noreplace) %{_sysconfdir}/%{name}/logger.cfg +%{_datadir}/%{name}/ +%{_mandir}/man1/*.1* + +%files devel +%{_includedir}/%{name}/ +%{_libdir}/pkgconfig/%{name}.pc +%{_libdir}/cmake/%{name}/ +%{_libdir}/libcmr.so +%{_libdir}/libdcmdata.so +%{_libdir}/libdcmdsig.so +%{_libdir}/libdcmect.so +%{_libdir}/libdcmfg.so +%{_libdir}/libdcmimgle.so +%{_libdir}/libdcmimage.so +%{_libdir}/libdcmiod.so +%{_libdir}/libdcmjpeg.so +%{_libdir}/libdcmjpls.so +%{_libdir}/libdcmnet.so +%{_libdir}/libdcmpmap.so +%{_libdir}/libdcmpstat.so +%{_libdir}/libdcmqrdb.so +%{_libdir}/libdcmrt.so +%{_libdir}/libdcmseg.so +%{_libdir}/libdcmsr.so +%{_libdir}/libdcmtkcharls.so +%{_libdir}/libdcmtls.so +%{_libdir}/libdcmtract.so +%{_libdir}/libdcmwlm.so +%{_libdir}/libi2d.so +%{_libdir}/libijg16.so +%{_libdir}/libijg12.so +%{_libdir}/libijg8.so +%{_libdir}/liboflog.so +%{_libdir}/libofstd.so + +%changelog +* Fri Jun 16 2023 forrest_ly - 3.6.7-1 +- init for anolis 23