Compare commits

...

No commits in common. 'epel9' and 'i10ce' have entirely different histories.
epel9 ... i10ce

@ -0,0 +1,2 @@
3d9564d24780837847e2293538c636a16fbec1b0 SOURCES/gdcmData.tar.gz
7a8251c64db6cad460e6472e5bb7ef30d505dbbb SOURCES/gdcm-3.0.24.tar.gz

31
.gitignore vendored

@ -1,29 +1,2 @@
/gdcm-2.0.16.tar.bz2
/gdcm-2.0.17.tar.bz2
/gdcm-2.0.18.tar.bz2
/gdcm-2.2.3.tar.bz2
/gdcm-2.2.4.tar.bz2
/gdcmData.tar.bz2
/gdcmData.tar.gz
/gdcm-2.4.0.tar.bz2
/gdcm-2.4.1.tar.bz2
/gdcm-2.4.2.tar.bz2
/gdcm-2.4.3.tar.bz2
/gdcm-2.4.4.tar.bz2
/gdcm-2.4.5.tar.bz2
/gdcm-2.6.1.tar.bz2
/gdcm-2.6.2.tar.gz
/gdcm-2.6.2.tar.bz2
/gdcm-2.6.3.tar.bz2
/gdcm-2.6.5.tar.gz
/gdcm-2.6.5.tar.bz2
/gdcm-2.8.4.tar.bz2
/gdcm-2.8.8.tar.gz
/gdcm-2.8.9.tar.gz
/gdcm-3.0.0.tar.gz
/gdcm-3.0.1.tar.gz
/gdcm-3.0.7.tar.gz
/gdcm-3.0.8.tar.gz
/gdcm-3.0.9.tar.gz
/gdcm-3.0.10.tar.gz
/gdcm-3.0.12.tar.gz
SOURCES/gdcmData.tar.gz
SOURCES/gdcm-3.0.24.tar.gz

@ -1,40 +0,0 @@
From 37a7a2e60e310056553a39d1fd9a9fda6e565e7b Mon Sep 17 00:00:00 2001
From: Sandro <devel@penguinpee.nl>
Date: Fri, 19 Apr 2024 15:18:43 +0200
Subject: [PATCH] Python 3.13: Replace deprecated PyEval_CallObject()
The function has been deprecated since Python 3.9 and will be removed
from Python 3.13.
See: https://docs.python.org/3.13/whatsnew/3.13.html#id9
---
Wrapping/Python/gdcmswig.i | 2 +-
Wrapping/SWIGCommon/gdcmcommon.i | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/Wrapping/Python/gdcmswig.i b/Wrapping/Python/gdcmswig.i
index a2aa3760db..820178b599 100644
--- a/Wrapping/Python/gdcmswig.i
+++ b/Wrapping/Python/gdcmswig.i
@@ -623,7 +623,7 @@ static bool callback_helper(gdcm::DataSet const & ds1, gdcm::DataSet const & ds2
/* fail */
assert(0);
}
- result = PyEval_CallObject(func, arglist);
+ result = PyObject_CallObject(func, arglist);
Py_DECREF(arglist);
if (result && result != Py_None) {
PyErr_SetString(PyExc_TypeError,
diff --git a/Wrapping/SWIGCommon/gdcmcommon.i b/Wrapping/SWIGCommon/gdcmcommon.i
index 8794bce14c..449cf8c77a 100644
--- a/Wrapping/SWIGCommon/gdcmcommon.i
+++ b/Wrapping/SWIGCommon/gdcmcommon.i
@@ -631,7 +631,7 @@ static bool callback_helper(gdcm::DataSet const & ds1, gdcm::DataSet const & ds2
/* fail */
assert(0);
}
- result = PyEval_CallObject(func, arglist);
+ result = PyObject_CallObject(func, arglist);
Py_DECREF(arglist);
if (result && result != Py_None) {
PyErr_SetString(PyExc_TypeError,

@ -0,0 +1,10 @@
--- GDCM-3.0.24/CMakeLists.txt
+++ GDCM-3.0.24/CMakeLists.txt
@@ -335,6 +335,7 @@ mark_as_advanced(
option(GDCM_USE_SYSTEM_POPPLER "Use system poppler (pdf)" OFF)
if(GDCM_USE_SYSTEM_POPPLER)
find_package(Poppler REQUIRED)
+ set(CMAKE_CXX_STANDARD 20)
endif()
mark_as_advanced(GDCM_USE_SYSTEM_POPPLER)

@ -1,3 +1,378 @@
## START: Set by rpmautospec
## (rpmautospec version 0.7.3)
## RPMAUTOSPEC: autorelease, autochangelog
%define autorelease(e:s:pb:n) %{?-p:0.}%{lua:
release_number = 4;
base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}"));
print(release_number + base_release_number - 1);
}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}}
## END: Set by rpmautospec
# Enabled by default
%bcond_without tests
# note ABI does not change in patch releases
# https://sourceforge.net/p/gdcm/mailman/message/36768376/
# Docs do not build on i686 because some LaTeX deps are unsatisfied. So skip
# these docs entirely.
%bcond_with texdocs
Name: gdcm
Version: 3.0.24
Release: %autorelease
Summary: Grassroots DiCoM is a C++ library to parse DICOM medical files
# SPDX
License: BSD-3-Clause
URL: https://sourceforge.net/projects/gdcm/
# Use github release
Source0: https://github.com/malaterre/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz
Source1: http://downloads.sourceforge.net/project/gdcm/gdcmData/gdcmData/gdcmData.tar.gz
Patch1: 0001-3.0.1-Use-copyright.patch
# Fix for 1687233
Patch2: 0002-Fix-export-variables.patch
Patch3: gdcm-3.0.24-c++20.patch
BuildRequires: CharLS-devel >= 2.2
BuildRequires: cmake
BuildRequires: doxygen
BuildRequires: libxslt-devel
BuildRequires: dcmtk-devel
BuildRequires: docbook5-style-xsl
BuildRequires: docbook-style-xsl
BuildRequires: expat-devel
BuildRequires: fontconfig-devel
BuildRequires: gcc
BuildRequires: gcc-c++
BuildRequires: git-core
BuildRequires: graphviz
BuildRequires: gl2ps-devel
BuildRequires: libogg-devel
BuildRequires: libtheora-devel
BuildRequires: libuuid-devel
BuildRequires: mesa-libOSMesa-devel
BuildRequires: openssl-devel
BuildRequires: pkgconfig(libopenjp2)
BuildRequires: poppler-devel
BuildRequires: python3-devel
BuildRequires: swig
BuildRequires: sqlite-devel
BuildRequires: json-c-devel
BuildRequires: libxml2-devel
BuildRequires: make
# BuildRequires: vtk-devel
# deps aren't available on i686, so we skip docs building entirely
%if %{with texdocs}
BuildRequires: texlive-scheme-medium
BuildRequires: tex(hanging.sty)
BuildRequires: tex(tocloft.sty)
BuildRequires: tex(newunicodechar.sty)
%endif
%description
Grassroots DiCoM (GDCM) is a C++ library for DICOM medical files.
It supports ACR-NEMA version 1 and 2 (huffman compression is not supported),
RAW, JPEG, JPEG 2000, JPEG-LS, RLE and deflated transfer syntax.
It comes with a super fast scanner implementation to quickly scan hundreds of
DICOM files. It supports SCU network operations (C-ECHO, C-FIND, C-STORE,
C-MOVE). PS 3.3 & 3.6 are distributed as XML files.
It also provides PS 3.15 certificates and password based mechanism to
anonymize and de-identify DICOM datasets.
%package doc
Summary: Includes html documentation for gdcm
BuildArch: noarch
Provides: %{name}-examples = %{version}-%{release}
Obsoletes: %{name}-examples < %{version}-%{release}
%description doc
You should install the gdcm-doc package if you would like to
access upstream documentation for gdcm.
Includes CSharp, C++, Java, PHP and Python example programs for GDCM
in html pages
%package applications
Summary: Includes command line programs for GDCM
Requires: %{name}%{?_isa} = %{version}-%{release}
%description applications
You should install the gdcm-applications package if you would like to
use command line programs part of GDCM. Includes tools to convert,
anonymize, manipulate, concatenate, and view DICOM files.
%package devel
Summary: Libraries and headers for GDCM
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: %{name}-applications%{?_isa} = %{version}-%{release}
%description devel
You should install the gdcm-devel package if you would like to
compile applications based on gdcm
%package -n python3-gdcm
Summary: Python binding for GDCM
%{?python_provide:%python_provide python3-gdcm}
Requires: %{name}%{?_isa} = %{version}-%{release}
%description -n python3-gdcm
You should install the python3-gdcm package if you would like to
used this library with python
%prep
%autosetup -n GDCM-%{version} -S git
# Data source
%setup -n GDCM-%{version} -q -T -D -a 1
# deps not available
%if %{with texdocs}
sed -i.backup 's/^GENERATE_LATEX.*=.*YES/GENERATE_LATEX = NO/' Utilities/doxygen/doxyfile.in
%endif
# Remove bundled utilities (we use Fedora's ones)
rm -rf Utilities/gdcmexpat
rm -rf Utilities/gdcmopenjpeg-v1
rm -rf Utilities/gdcmopenjpeg-v2
rm -rf Utilities/gdcmzlib
rm -rf Utilities/gdcmuuid
rm -rf Utilities/gdcmcharls
# Remove bundled utilities (we don't use them)
rm -rf Utilities/getopt
rm -rf Utilities/pvrg
rm -rf Utilities/rle
rm -rf Utilities/wxWidgets
# Needed for testing:
#rm -rf Utilities/gdcmmd5
%build
%cmake \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-DGDCM_INSTALL_PACKAGE_DIR=%{_libdir}/cmake/%{name} \
-DGDCM_INSTALL_INCLUDE_DIR=%{_includedir}/%{name} \
-DGDCM_INSTALL_DOC_DIR=%{_docdir}/%{name} \
-DGDCM_INSTALL_MAN_DIR=%{_mandir} \
-DGDCM_INSTALL_LIB_DIR=%{_libdir} \
-DGDCM_BUILD_TESTING:BOOL=ON \
-DGDCM_DATA_ROOT=../gdcmData/ \
-DGDCM_BUILD_EXAMPLES:BOOL=ON \
-DGDCM_DOCUMENTATION:BOOL=OFF \
-DGDCM_WRAP_PYTHON:BOOL=ON \
-DPYTHON_EXECUTABLE=%{python3} \
-DGDCM_INSTALL_PYTHONMODULE_DIR=%{python3_sitearch} \
-DGDCM_WRAP_JAVA:BOOL=OFF \
-DGDCM_WRAP_CSHARP:BOOL=OFF \
-DGDCM_BUILD_SHARED_LIBS:BOOL=ON \
-DGDCM_BUILD_APPLICATIONS:BOOL=ON \
-DCMAKE_BUILD_TYPE:STRING="RelWithDebInfo" \
-DGDCM_USE_VTK:BOOL=OFF \
-DGDCM_USE_SYSTEM_CHARLS:BOOL=ON \
-DGDCM_USE_SYSTEM_EXPAT:BOOL=ON \
-DGDCM_USE_SYSTEM_OPENJPEG:BOOL=ON \
-DGDCM_USE_SYSTEM_ZLIB:BOOL=ON \
-DGDCM_USE_SYSTEM_UUID:BOOL=ON \
-DGDCM_USE_SYSTEM_LJPEG:BOOL=OFF \
-DGDCM_USE_SYSTEM_OPENSSL:BOOL=ON \
-DGDCM_USE_JPEGLS:BOOL=ON \
-DGDCM_USE_SYSTEM_LIBXML2:BOOL=ON \
-DGDCM_USE_SYSTEM_JSON:BOOL=ON \
-DGDCM_USE_SYSTEM_POPPLER:BOOL=ON
#Cannot build wrap_java:
# -DGDCM_VTK_JAVA_JAR:PATH=/usr/share/java/vtk.jar no found!
# yum provides */vtk.jar -> No results found
%cmake_build
%install
%cmake_install
%if %{with tests}
%check
# Making the tests informative only for now. Several failing tests (27/228):
# 11,40,48,49,107-109,111-114,130-135,146,149,,151-154,157,194,216,219
make test -C %{__cmake_builddir} || exit 0
%endif
%files
%doc AUTHORS README.md
%license Copyright.txt README.Copyright.txt
%{_libdir}/libgdcmCommon.so.3.0
%{_libdir}/libgdcmCommon.so.3.0.24
%{_libdir}/libgdcmDICT.so.3.0
%{_libdir}/libgdcmDICT.so.3.0.24
%{_libdir}/libgdcmDSED.so.3.0
%{_libdir}/libgdcmDSED.so.3.0.24
%{_libdir}/libgdcmIOD.so.3.0
%{_libdir}/libgdcmIOD.so.3.0.24
%{_libdir}/libgdcmMEXD.so.3.0
%{_libdir}/libgdcmMEXD.so.3.0.24
%{_libdir}/libgdcmMSFF.so.3.0
%{_libdir}/libgdcmMSFF.so.3.0.24
%{_libdir}/libgdcmjpeg12.so.3.0
%{_libdir}/libgdcmjpeg12.so.3.0.24
%{_libdir}/libgdcmjpeg16.so.3.0
%{_libdir}/libgdcmjpeg16.so.3.0.24
%{_libdir}/libgdcmjpeg8.so.3.0
%{_libdir}/libgdcmjpeg8.so.3.0.24
%{_libdir}/libgdcmmd5.so.3.0
%{_libdir}/libgdcmmd5.so.3.0.24
%{_libdir}/libsocketxx.so.1.2
%{_libdir}/libsocketxx.so.1.2.0
%dir %{_datadir}/%{name}-3.0/
%{_datadir}/%{name}-3.0/XML/
%files doc
%doc %{_docdir}/%{name}
%files applications
%{_bindir}/gdcmanon
%{_bindir}/gdcmconv
%{_bindir}/gdcmclean
%{_bindir}/gdcmdiff
%{_bindir}/gdcmdump
%{_bindir}/gdcmgendir
%{_bindir}/gdcmimg
%{_bindir}/gdcminfo
%{_bindir}/gdcmpap3
%{_bindir}/gdcmpdf
%{_bindir}/gdcmraw
%{_bindir}/gdcmscanner
%{_bindir}/gdcmscu
%{_bindir}/gdcmtar
%{_bindir}/gdcmxml
%doc %{_mandir}/man1/*.1*
%files devel
%{_includedir}/%{name}/
%{_libdir}/libgdcmCommon.so
%{_libdir}/libgdcmDICT.so
%{_libdir}/libgdcmDSED.so
%{_libdir}/libgdcmIOD.so
%{_libdir}/libgdcmMEXD.so
%{_libdir}/libgdcmMSFF.so
%{_libdir}/libgdcmjpeg12.so
%{_libdir}/libgdcmjpeg16.so
%{_libdir}/libgdcmjpeg8.so
%{_libdir}/libgdcmmd5.so
%{_libdir}/libsocketxx.so
%{_libdir}/cmake/%{name}/
%files -n python3-gdcm
%{python3_sitearch}/%{name}*.py
%{python3_sitearch}/_%{name}swig.so
%{python3_sitearch}/__pycache__/%{name}*
%changelog
* Sat Dec 21 2024 Dmitriy Samoylik <samoylikdv@msvsphere-os.ru> - 3.0.24-4
- Rebuilt for MSVSphere 10
## START: Generated by rpmautospec
* Thu Aug 22 2024 Marek Kasik <mkasik@redhat.com> - 3.0.24-4
- Rebuild for poppler 24.08.0
* Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.24-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Mon Jun 24 2024 Ankur Sinha (Ankur Sinha Gmail) <sanjay.ankur@gmail.com> - 3.0.24-2
- chore: mark data as source too (fixes rhbz#2278879)
* Mon Jun 24 2024 Ankur Sinha (Ankur Sinha Gmail) <sanjay.ankur@gmail.com> - 3.0.24-1
- feat: update to 3.0.24 (fixes rhbz#2278879)
* Fri Jun 07 2024 Python Maint <python-maint@redhat.com> - 3.0.23-7
- Rebuilt for Python 3.13
* Mon May 27 2024 Benjamin A. Beasley <code@musicinmybrain.net> - 3.0.23-6
- Fix unowned directory /usr/share/gdcm-3.0/
* Fri Apr 26 2024 Sandro <devel@penguinpee.nl> - 3.0.23-5
- Apply security patches
- Fix TALOS-2024-1924, CVE-2024-22391 (RHBZ#2277288)
- Fix TALOS-2024-1935, CVE-2024-22373 (RHBZ#2277292)
- Fix TALOS-2024-1944, CVE-2024-25569 (RHBZ#2277296)
* Fri Apr 19 2024 Sandro <devel@penguinpee.nl> - 3.0.23-4
- Replace deprecated PyEval_CallObject() (RHBZ#2245816)
* Fri Mar 22 2024 Sérgio M. Basto <sergio@serjux.com> - 3.0.23-3
- Update URL
* Mon Feb 26 2024 Sandro <devel@penguinpee.nl> - 3.0.23-2
- Migrate to SPDX license
* Mon Feb 26 2024 Sandro <devel@penguinpee.nl> - 3.0.23-1
- Update to 3.0.23 (RHBZ#2257639)
- Drop `157.patch` (merged upstream)
- Bump soname
* Tue Feb 06 2024 Ankur Sinha (Ankur Sinha Gmail) <sanjay.ankur@gmail.com> - 3.0.22-7
- Rebuild for poppler 24.02.0
* Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.22-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.22-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Mon Aug 07 2023 Marek Kasik <mkasik@redhat.com> - 3.0.22-4
- Rebuild for poppler 23.08.0
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.22-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Tue Jun 13 2023 Python Maint <python-maint@redhat.com> - 3.0.22-2
- Rebuilt for Python 3.12
* Sat Jun 10 2023 Orion Poplawski <orion@nwra.com> - 3.0.22-1
- Update to 3.0.22
* Mon Feb 06 2023 Ankur Sinha (Ankur Sinha Gmail) <sanjay.ankur@gmail.com> - 3.0.21-3
- chore: rebuild for poppler 23.02.0
* Mon Jan 30 2023 Ankur Sinha (Ankur Sinha Gmail) <sanjay.ankur@gmail.com> - 3.0.21-2
- fix: disable TeX doc generation
* Mon Jan 30 2023 Ankur Sinha (Ankur Sinha Gmail) <sanjay.ankur@gmail.com> - 3.0.21-1
- feat: update to 3.0.21 (fixes rhbz#2100773)
* Mon Jan 30 2023 Ankur Sinha (Ankur Sinha Gmail) <sanjay.ankur@gmail.com> - 3.0.20-2
- chore: upload sources
* Mon Jan 30 2023 Sérgio M. Basto <sergio@serjux.com> - 3.0.20-1
- Update GDCM to 3.0.20
* Mon Jan 30 2023 Sérgio M. Basto <sergio@serjux.com> - 3.0.12-7
- Make documentation again
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.12-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Tue Aug 02 2022 Ankur Sinha (Ankur Sinha Gmail) <sanjay.ankur@gmail.com> - 3.0.12-5
- chore: rebuild for poppler 22.08.0
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.12-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Mon Jun 13 2022 Python Maint <python-maint@redhat.com> - 3.0.12-3
- Rebuilt for Python 3.11
* Fri May 20 2022 Sandro Mani <manisandro@gmail.com> - 3.0.12-2
- Rebuild for gdal-3.5.0 and/or openjpeg-2.5.0
* Sat Apr 02 2022 Ankur Sinha (Ankur Sinha Gmail) <sanjay.ankur@gmail.com> - 3.0.12-1
- feat: update to 3.0.12 (fixes rhbz#2068208)
* Tue Feb 08 2022 Ankur Sinha (Ankur Sinha Gmail) <sanjay.ankur@gmail.com> - 3.0.10-1
- feat: to 3.0.10 (fixes #2011596)
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.9-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Tue Sep 14 2021 Sahana Prasad <sahana@redhat.com> - 3.0.9-3
- Rebuilt with OpenSSL 3.0.0
@ -484,3 +859,5 @@ already included upstream
* Wed Feb 17 2010 Mario Ceresa <mrceresa@gmail.com> 2.0.14
- Initial RPM Release
## END: Generated by rpmautospec

@ -1,63 +0,0 @@
From 21a793095ab3aecb794c56439873e5b181ea9d91 Mon Sep 17 00:00:00 2001
From: Mathieu Malaterre <mathieu.malaterre@gmail.com>
Date: Wed, 21 Feb 2024 02:00:38 -0800
Subject: [PATCH] Remove symptoms of TALOS-2024-1924
diff --git a/Source/DataStructureAndEncodingDefinition/gdcmElement.h b/Source/DataStructureAndEncodingDefinition/gdcmElement.h
index b49b093dc..15fb3a117 100644
--- a/Source/DataStructureAndEncodingDefinition/gdcmElement.h
+++ b/Source/DataStructureAndEncodingDefinition/gdcmElement.h
@@ -473,7 +473,7 @@ public:
assert( _is ); // Is stream valid ?
_is.read( reinterpret_cast<char*>(data+0), type_size);
for(unsigned long i=1; i<length; ++i) {
- assert( _is );
+ if( _is )
_is.read( reinterpret_cast<char*>(data+i), type_size );
}
//ByteSwap<T>::SwapRangeFromSwapCodeIntoSystem(data,
@@ -489,7 +489,7 @@ public:
assert( _is ); // Is stream valid ?
_is.read( reinterpret_cast<char*>(data+0), type_size);
for(unsigned long i=1; i<length; ++i) {
- assert( _is );
+ if( _is )
_is.read( reinterpret_cast<char*>(data+i), type_size );
}
//ByteSwap<T>::SwapRangeFromSwapCodeIntoSystem(data,
diff --git a/Source/MediaStorageAndFileFormat/gdcmLookupTable.cxx b/Source/MediaStorageAndFileFormat/gdcmLookupTable.cxx
index 0d5a99c40..2c566923b 100644
--- a/Source/MediaStorageAndFileFormat/gdcmLookupTable.cxx
+++ b/Source/MediaStorageAndFileFormat/gdcmLookupTable.cxx
@@ -130,7 +130,10 @@ void LookupTable::SetLUT(LookupTableType type, const unsigned char *array,
if( !IncompleteLUT )
{
- assert( Internal->RGB.size() == 3*Internal->Length[type]*(BitSample/8) );
+ if( Internal->RGB.size() != 3*Internal->Length[type]*(BitSample/8) ) {
+ gdcmErrorMacro( "Invalid length for LUT data" );
+ return;
+ }
}
// Too funny: 05115014-mr-siemens-avanto-syngo-with-palette-icone.dcm
// There is pseudo PALETTE_COLOR LUT in the Icon, if one look carefully the LUT values
diff --git a/Source/MediaStorageAndFileFormat/gdcmPixmapReader.cxx b/Source/MediaStorageAndFileFormat/gdcmPixmapReader.cxx
index 9c30ff8b9..258a23c1f 100644
--- a/Source/MediaStorageAndFileFormat/gdcmPixmapReader.cxx
+++ b/Source/MediaStorageAndFileFormat/gdcmPixmapReader.cxx
@@ -306,8 +306,12 @@ static void DoIconImage(const DataSet& rootds, Pixmap& image)
unsigned long check =
(el_us3.GetValue(0) ? el_us3.GetValue(0) : 65536)
* el_us3.GetValue(2) / 8;
- assert( check == lut_raw->GetLength() || 2 * check == lut_raw->GetLength()
- || check + 1 == lut_raw->GetLength() ); (void)check;
+ if(!( check == lut_raw->GetLength() || 2 * check == lut_raw->GetLength()
+ || check + 1 == lut_raw->GetLength() )) {
+ gdcmErrorMacro( "Icon Sequence is invalid. Giving up" );
+ pixeldata.Clear();
+ return;
+ }
}
else if( ds.FindDataElement( seglut ) )
{

@ -1,38 +0,0 @@
From 371c2d937e37b08a46eeb0628c553ce4608a45df Mon Sep 17 00:00:00 2001
From: Mathieu Malaterre <mathieu.malaterre@gmail.com>
Date: Wed, 21 Feb 2024 02:18:35 -0800
Subject: [PATCH] Remove symptoms from TALOS-2024-1935
diff --git a/Source/MediaStorageAndFileFormat/gdcmImageChangeTransferSyntax.cxx b/Source/MediaStorageAndFileFormat/gdcmImageChangeTransferSyntax.cxx
index fcb61e611..9457c5e9b 100644
--- a/Source/MediaStorageAndFileFormat/gdcmImageChangeTransferSyntax.cxx
+++ b/Source/MediaStorageAndFileFormat/gdcmImageChangeTransferSyntax.cxx
@@ -421,6 +421,7 @@ bool ImageChangeTransferSyntax::Change()
if( !b )
{
gdcmErrorMacro( "Error in getting buffer from input image." );
+ delete bv0;
return false;
}
pixeldata.SetValue( *bv0 );
diff --git a/Source/MediaStorageAndFileFormat/gdcmJPEG2000Codec.cxx b/Source/MediaStorageAndFileFormat/gdcmJPEG2000Codec.cxx
index 10ac23cca..430a24a87 100644
--- a/Source/MediaStorageAndFileFormat/gdcmJPEG2000Codec.cxx
+++ b/Source/MediaStorageAndFileFormat/gdcmJPEG2000Codec.cxx
@@ -826,8 +826,13 @@ std::pair<char *, size_t> JPEG2000Codec::DecodeByStreamsCommon(char *dummy_buffe
// ELSCINT1_JP2vsJ2K.dcm
// -> prec = 12, bpp = 0, sgnd = 0
- //assert( wr == Dimensions[0] );
- //assert( hr == Dimensions[1] );
+ if( wr != Dimensions[0] || hr != Dimensions[1] ) {
+ gdcmErrorMacro("Invalid dimension");
+ delete[] raw;
+ opj_destroy_codec(dinfo);
+ opj_image_destroy(image);
+ return std::pair<char*,size_t>(nullptr,0);
+ }
if( comp->sgnd != PF.GetPixelRepresentation() )
{
PF.SetPixelRepresentation( (uint16_t)comp->sgnd );

@ -1,36 +0,0 @@
From dda17aa8d5939e4e255ebba67aacf34b09d88692 Mon Sep 17 00:00:00 2001
From: Mathieu Malaterre <mathieu.malaterre@gmail.com>
Date: Wed, 21 Feb 2024 02:44:55 -0800
Subject: [PATCH] Remove symptoms from TALOS-2024-1944
diff --git a/Source/MediaStorageAndFileFormat/gdcmRAWCodec.cxx b/Source/MediaStorageAndFileFormat/gdcmRAWCodec.cxx
index 19f739399..46392461e 100644
--- a/Source/MediaStorageAndFileFormat/gdcmRAWCodec.cxx
+++ b/Source/MediaStorageAndFileFormat/gdcmRAWCodec.cxx
@@ -112,9 +112,7 @@ bool RAWCodec::DecodeBytes(const char* inBytes, size_t inBufferLength,
if(!r) return false;
std::string str = os.str();
- //std::string::size_type check = str.size();//unused
-
if( this->GetPixelFormat() == PixelFormat::UINT12 ||
this->GetPixelFormat() == PixelFormat::INT12 )
{
@@ -135,7 +133,14 @@ bool RAWCodec::DecodeBytes(const char* inBytes, size_t inBufferLength,
// DermaColorLossLess.dcm
//assert (check == inOutBufferLength || check == inOutBufferLength + 1);
// problem with: SIEMENS_GBS_III-16-ACR_NEMA_1.acr
- memcpy(outBytes, str.c_str(), inOutBufferLength);
+ size_t len = str.size();
+ if( inOutBufferLength <= len )
+ memcpy(outBytes, str.c_str(), inOutBufferLength);
+ else
+ {
+ gdcmWarningMacro( "Requesting too much data. Truncating result" );
+ memcpy(outBytes, str.c_str(), len);
+ }
}
return r;

@ -1,278 +0,0 @@
# Enabled by default
%bcond_without tests
%if 0%{?fedora} < 33
%undefine __cmake_in_source_build
%endif
Name: gdcm
Version: 3.0.12
Release: %autorelease
Summary: Grassroots DiCoM is a C++ library to parse DICOM medical files
License: BSD
URL: http://gdcm.sourceforge.net/wiki/index.php/Main_Page
# Use github release
Source0: https://github.com/malaterre/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz
Source1: http://downloads.sourceforge.net/project/gdcm/gdcmData/gdcmData/gdcmData.tar.gz
Patch1: 0001-3.0.1-Use-copyright.patch
# Fix for 1687233
Patch2: 0002-Fix-export-variables.patch
# Python 3.13: Replace deprecated PyEval_CallObject()
Patch3: https://github.com/malaterre/GDCM/pull/171.patch
# TALOS-2024-1924: https://bugzilla.redhat.com/show_bug.cgi?id=2277288
Patch4: TALOS-2024-1924.patch
# TALOS-2024-1935: https://bugzilla.redhat.com/show_bug.cgi?id=2277292
Patch5: TALOS-2024-1935.patch
# TALOS-2024-1944: https://bugzilla.redhat.com/show_bug.cgi?id=2277296
Patch6: TALOS-2024-1944.patch
BuildRequires: CharLS-devel >= 2.0
BuildRequires: cmake
BuildRequires: doxygen
BuildRequires: libxslt-devel
BuildRequires: dcmtk-devel
BuildRequires: docbook5-style-xsl
BuildRequires: docbook-style-xsl
BuildRequires: expat-devel
BuildRequires: fontconfig-devel
BuildRequires: gcc
BuildRequires: gcc-c++
BuildRequires: git-core
BuildRequires: graphviz
BuildRequires: gl2ps-devel
BuildRequires: libogg-devel
BuildRequires: libtheora-devel
BuildRequires: libuuid-devel
BuildRequires: mesa-libOSMesa-devel
BuildRequires: openssl-devel
BuildRequires: pkgconfig(libopenjp2)
BuildRequires: poppler-devel
BuildRequires: python3-devel
BuildRequires: swig
BuildRequires: sqlite-devel
BuildRequires: json-c-devel
BuildRequires: libxml2-devel
BuildRequires: make
# BuildRequires: vtk-devel
# Do not generate latex
# BuildRequires: /usr/bin/latex
# BuildRequires: /usr/bin/pdflatex
# BuildRequires: /usr/bin/dvips
# BuildRequires: /usr/bin/epstopdf
#BuildRequires: texlive-ec
%description
Grassroots DiCoM (GDCM) is a C++ library for DICOM medical files.
It supports ACR-NEMA version 1 and 2 (huffman compression is not supported),
RAW, JPEG, JPEG 2000, JPEG-LS, RLE and deflated transfer syntax.
It comes with a super fast scanner implementation to quickly scan hundreds of
DICOM files. It supports SCU network operations (C-ECHO, C-FIND, C-STORE,
C-MOVE). PS 3.3 & 3.6 are distributed as XML files.
It also provides PS 3.15 certificates and password based mechanism to
anonymize and de-identify DICOM datasets.
%package doc
Summary: Includes html documentation for gdcm
BuildArch: noarch
%description doc
You should install the gdcm-doc package if you would like to
access upstream documentation for gdcm.
%package applications
Summary: Includes command line programs for GDCM
Requires: %{name}%{?_isa} = %{version}-%{release}
%description applications
You should install the gdcm-applications package if you would like to
use command line programs part of GDCM. Includes tools to convert,
anonymize, manipulate, concatenate, and view DICOM files.
%package devel
Summary: Libraries and headers for GDCM
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: %{name}-applications%{?_isa} = %{version}-%{release}
%description devel
You should install the gdcm-devel package if you would like to
compile applications based on gdcm
%package examples
Summary: CSharp, C++, Java, PHP and Python example programs for GDCM
Requires: %{name}%{?_isa} = %{version}-%{release}
%description examples
GDCM examples
%package -n python3-gdcm
Summary: Python binding for GDCM
%{?python_provide:%python_provide python3-gdcm}
Requires: %{name}%{?_isa} = %{version}-%{release}
%description -n python3-gdcm
You should install the python3-gdcm package if you would like to
used this library with python
%prep
%autosetup -n GDCM-%{version} -S git
# Data source
%setup -n GDCM-%{version} -q -T -D -a 1
# Fix cmake command
sed -i.backup 's/add_dependency/add_dependencies/' Utilities/doxygen/CMakeLists.txt
# Stop doxygen from producing LaTeX output
sed -i.backup 's/^GENERATE_LATEX.*=.*YES/GENERATE_LATEX = NO/' Utilities/doxygen/doxyfile.in
# Remove bundled utilities (we use Fedora's ones)
rm -rf Utilities/gdcmexpat
rm -rf Utilities/gdcmopenjpeg-v1
rm -rf Utilities/gdcmopenjpeg-v2
rm -rf Utilities/gdcmzlib
rm -rf Utilities/gdcmuuid
rm -rf Utilities/gdcmcharls
# Remove bundled utilities (we don't use them)
rm -rf Utilities/getopt
rm -rf Utilities/pvrg
rm -rf Utilities/rle
rm -rf Utilities/wxWidgets
# Needed for testing:
#rm -rf Utilities/gdcmmd5
%build
%cmake .. \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-DGDCM_INSTALL_PACKAGE_DIR=%{_libdir}/cmake/%{name} \
-DGDCM_INSTALL_INCLUDE_DIR=%{_includedir}/%{name} \
-DGDCM_INSTALL_DOC_DIR=%{_docdir}/%{name} \
-DGDCM_INSTALL_MAN_DIR=%{_mandir} \
-DGDCM_INSTALL_LIB_DIR=%{_libdir} \
-DGDCM_BUILD_TESTING:BOOL=ON \
-DGDCM_DATA_ROOT=../gdcmData/ \
-DGDCM_BUILD_EXAMPLES:BOOL=OFF \
-DGDCM_DOCUMENTATION:BOOL=OFF \
-DGDCM_WRAP_PYTHON:BOOL=ON \
-DPYTHON_EXECUTABLE=%{python3} \
-DGDCM_INSTALL_PYTHONMODULE_DIR=%{python3_sitearch} \
-DGDCM_WRAP_JAVA:BOOL=OFF \
-DGDCM_WRAP_CSHARP:BOOL=OFF \
-DGDCM_BUILD_SHARED_LIBS:BOOL=ON \
-DGDCM_BUILD_APPLICATIONS:BOOL=ON \
-DCMAKE_BUILD_TYPE:STRING="RelWithDebInfo" \
-DGDCM_USE_VTK:BOOL=OFF \
-DGDCM_USE_SYSTEM_CHARLS:BOOL=ON \
-DGDCM_USE_SYSTEM_EXPAT:BOOL=ON \
-DGDCM_USE_SYSTEM_OPENJPEG:BOOL=ON \
-DGDCM_USE_SYSTEM_ZLIB:BOOL=ON \
-DGDCM_USE_SYSTEM_UUID:BOOL=ON \
-DGDCM_USE_SYSTEM_LJPEG:BOOL=OFF \
-DGDCM_USE_SYSTEM_OPENSSL:BOOL=ON \
-DGDCM_USE_JPEGLS:BOOL=ON \
-DGDCM_USE_SYSTEM_LIBXML2:BOOL=ON \
-DGDCM_USE_SYSTEM_JSON:BOOL=ON \
-DGDCM_USE_SYSTEM_POPPLER:BOOL=ON
#Cannot build wrap_java:
# -DGDCM_VTK_JAVA_JAR:PATH=/usr/share/java/vtk.jar no found!
# yum provides */vtk.jar -> No results found
%cmake_build
%install
%cmake_install
install -d $RPM_BUILD_ROOT%{python3_sitearch}
# Install examples
install -d $RPM_BUILD_ROOT/%{_datadir}/%{name}/Examples/
cp -rv ./Examples/* $RPM_BUILD_ROOT/%{_datadir}/%{name}/Examples/
%if %{with tests}
%check
# Making the tests informative only for now. Several failing tests (27/228):
# 11,40,48,49,107-109,111-114,130-135,146,149,,151-154,157,194,216,219
make test -C %{__cmake_builddir} || exit 0
%endif
%files
%doc AUTHORS README.md
%license Copyright.txt README.Copyright.txt
%{_libdir}/libgdcmCommon.so.3.0
%{_libdir}/libgdcmCommon.so.3.0.12
%{_libdir}/libgdcmDICT.so.3.0
%{_libdir}/libgdcmDICT.so.3.0.12
%{_libdir}/libgdcmDSED.so.3.0
%{_libdir}/libgdcmDSED.so.3.0.12
%{_libdir}/libgdcmIOD.so.3.0
%{_libdir}/libgdcmIOD.so.3.0.12
%{_libdir}/libgdcmMEXD.so.3.0
%{_libdir}/libgdcmMEXD.so.3.0.12
%{_libdir}/libgdcmMSFF.so.3.0
%{_libdir}/libgdcmMSFF.so.3.0.12
%{_libdir}/libgdcmjpeg12.so.3.0
%{_libdir}/libgdcmjpeg12.so.3.0.12
%{_libdir}/libgdcmjpeg16.so.3.0
%{_libdir}/libgdcmjpeg16.so.3.0.12
%{_libdir}/libgdcmjpeg8.so.3.0
%{_libdir}/libgdcmjpeg8.so.3.0.12
%{_libdir}/libgdcmmd5.so.3.0
%{_libdir}/libgdcmmd5.so.3.0.12
%{_libdir}/libsocketxx.so.1.2
%{_libdir}/libsocketxx.so.1.2.0
%dir %{_datadir}/%{name}
%dir %{_datadir}/%{name}-3.0/
%{_datadir}/%{name}-3.0/XML/
%exclude %{_docdir}/%{name}/html/
%exclude %{_docdir}/%{name}/Examples/
%files doc
#doc %{_docdir}/%{name}/html/
%files applications
%{_bindir}/gdcmanon
%{_bindir}/gdcmconv
%{_bindir}/gdcmdiff
%{_bindir}/gdcmdump
%{_bindir}/gdcmgendir
%{_bindir}/gdcmimg
%{_bindir}/gdcminfo
%{_bindir}/gdcmpap3
%{_bindir}/gdcmpdf
%{_bindir}/gdcmraw
%{_bindir}/gdcmscanner
%{_bindir}/gdcmscu
%{_bindir}/gdcmtar
%{_bindir}/gdcmxml
%doc %{_mandir}/man1/*.1*
%files devel
%{_includedir}/%{name}/
%{_libdir}/libgdcmCommon.so
%{_libdir}/libgdcmDICT.so
%{_libdir}/libgdcmDSED.so
%{_libdir}/libgdcmIOD.so
%{_libdir}/libgdcmMEXD.so
%{_libdir}/libgdcmMSFF.so
%{_libdir}/libgdcmjpeg12.so
%{_libdir}/libgdcmjpeg16.so
%{_libdir}/libgdcmjpeg8.so
%{_libdir}/libgdcmmd5.so
%{_libdir}/libsocketxx.so
%{_libdir}/cmake/%{name}/
%files examples
%{_datadir}/%{name}/Examples/
%files -n python3-gdcm
%{python3_sitearch}/%{name}*.py
%{python3_sitearch}/_%{name}swig.so
%{python3_sitearch}/__pycache__/%{name}*
%changelog
%autochangelog

@ -1,2 +0,0 @@
SHA512 (gdcm-3.0.12.tar.gz) = aa40774030de0483e9b56d12fefd1493574855104b5e8371c8c5e9c903aaa764b38ea75ec5afbd27bc50e5d53332e9e415b20cb2e5a65c1c4eb5d05bb692f9e8
SHA512 (gdcmData.tar.gz) = ddc67a7a0b41b2d6e1e03defb6fb8a06ceeb2e9dd9bb47dfa4f7283d79df7c1e52577b799c00e930719ae6cdda46bded9497a67b8241359f238f5366085ec9ee
Loading…
Cancel
Save