#8 Backport multiple CVE fixes
Merged 6 months ago by carlwgeorge. Opened 6 months ago by carlwgeorge.
rpms/ carlwgeorge/dcmtk epel9-cves  into  epel9

0001-Use-system-CharLS-include.patch 0001-3.6.4-Use-system-CharLS-include.patch
file renamed
+5 -5
@@ -1,7 +1,7 @@ 

- From 222912a741144c340ab226c9cdf02579c4f10a63 Mon Sep 17 00:00:00 2001

+ From aeff89b921c2f8e7a945e4c943d5a518901046a8 Mon Sep 17 00:00:00 2001

  From: "Ankur Sinha (Ankur Sinha Gmail)" <sanjay.ankur@gmail.com>

  Date: Sun, 28 Jul 2019 18:22:57 +0100

- Subject: [PATCH 01/16] 3.6.4 Use system CharLS include

+ Subject: [PATCH 01/22] Use system CharLS include

  

  ---

   dcmjpls/libsrc/djcodecd.cc | 2 +-
@@ -10,7 +10,7 @@ 

   3 files changed, 3 insertions(+), 3 deletions(-)

  

  diff --git a/dcmjpls/libsrc/djcodecd.cc b/dcmjpls/libsrc/djcodecd.cc

- index 3f0d85e1d..a56f944fe 100644

+ index fc0df5c7f..0cd5c0f14 100644

  --- a/dcmjpls/libsrc/djcodecd.cc

  +++ b/dcmjpls/libsrc/djcodecd.cc

  @@ -37,7 +37,7 @@
@@ -23,7 +23,7 @@ 

   E_TransferSyntax DJLSLosslessDecoder::supportedTransferSyntax() const

   {

  diff --git a/dcmjpls/libsrc/djcodece.cc b/dcmjpls/libsrc/djcodece.cc

- index 34eb81023..199f92489 100644

+ index 5e8266278..55a337caf 100644

  --- a/dcmjpls/libsrc/djcodece.cc

  +++ b/dcmjpls/libsrc/djcodece.cc

  @@ -55,7 +55,7 @@
@@ -49,5 +49,5 @@ 

   /** Helper class for converting between dcmjpls and CharLS error codes

    */

  -- 

- 2.21.0

+ 2.39.2

  

0002-Add-FindCharLS.patch 0002-3.6.4-Add-FindCharLS.patch
file renamed
+3 -3
@@ -1,7 +1,7 @@ 

- From fc1b268764920d89e595827d1521c65ea5650c14 Mon Sep 17 00:00:00 2001

+ From ab5eee567e3b3dff22074c19019f65685b960333 Mon Sep 17 00:00:00 2001

  From: "Ankur Sinha (Ankur Sinha Gmail)" <sanjay.ankur@gmail.com>

  Date: Sun, 28 Jul 2019 18:25:08 +0100

- Subject: [PATCH 02/16] 3.6.4 Add FindCharLS

+ Subject: [PATCH 02/22] Add FindCharLS

  

  ---

   CMake/FindCharLS.cmake | 35 +++++++++++++++++++++++++++++++++++
@@ -50,5 +50,5 @@ 

  +	)

  +

  -- 

- 2.21.0

+ 2.39.2

  

0003-Find-and-include-CharLS.patch 0003-3.6.6-Find-and-include-CharLS.patch
file renamed
+14 -1
@@ -1,5 +1,15 @@ 

+ From 931ed833628e176fd42503aae56c0c1d5eda27a8 Mon Sep 17 00:00:00 2001

+ From: "Ankur Sinha (Ankur Sinha Gmail)" <sanjay.ankur@gmail.com>

+ Date: Wed, 1 Mar 2023 22:15:45 -0600

+ Subject: [PATCH 03/22] Find and include CharLS

+ 

+ Co-authored-by: Alessio <alciregi@fedoraproject.org>

+ ---

+  CMake/3rdparty.cmake | 32 ++++++++++++++++++++++++++++++++

+  1 file changed, 32 insertions(+)

+ 

  diff --git a/CMake/3rdparty.cmake b/CMake/3rdparty.cmake

- index 43aa282..3c07780 100644

+ index 43aa282ef..3c0778049 100644

  --- a/CMake/3rdparty.cmake

  +++ b/CMake/3rdparty.cmake

  @@ -192,6 +192,22 @@ if(DCMTK_USE_FIND_PACKAGE)
@@ -48,3 +58,6 @@ 

   endif()

   

   if(NOT DEFINED DCMTK_WITH_STDLIBC_ICONV)

+ -- 

+ 2.39.2

+ 

0004-Use-cmake-suggested-locations-for-CharLS.patch 0004-3.6.6-Use-cmake-suggested-locations-for-CharLS.patch
file renamed
+16 -2
@@ -1,5 +1,16 @@ 

+ From f3effa90af65f2260bcc0700ba4909fcb7b5c7f0 Mon Sep 17 00:00:00 2001

+ From: "Ankur Sinha (Ankur Sinha Gmail)" <sanjay.ankur@gmail.com>

+ Date: Wed, 1 Mar 2023 22:40:03 -0600

+ Subject: [PATCH 04/22] Use cmake suggested locations for CharLS

+ 

+ Co-authored-by: Alessio <alciregi@fedoraproject.org>

+ ---

+  dcmjpls/apps/CMakeLists.txt   | 2 +-

+  dcmjpls/libsrc/CMakeLists.txt | 2 +-

+  2 files changed, 2 insertions(+), 2 deletions(-)

+ 

  diff --git a/dcmjpls/apps/CMakeLists.txt b/dcmjpls/apps/CMakeLists.txt

- index 0cb3f53..c5e9553 100644

+ index 0cb3f53ed..c5e955347 100644

  --- a/dcmjpls/apps/CMakeLists.txt

  +++ b/dcmjpls/apps/CMakeLists.txt

  @@ -8,5 +8,5 @@ endforeach()
@@ -10,7 +21,7 @@ 

  +  DCMTK_TARGET_LINK_MODULES(${PROGRAM} dcmjpls ${CHARLS_LIBS} dcmimage dcmimgle dcmdata oflog ofstd ofstd)

   endforeach()

  diff --git a/dcmjpls/libsrc/CMakeLists.txt b/dcmjpls/libsrc/CMakeLists.txt

- index bd928f8..c6cbb52 100644

+ index bd928f829..c6cbb52c8 100644

  --- a/dcmjpls/libsrc/CMakeLists.txt

  +++ b/dcmjpls/libsrc/CMakeLists.txt

  @@ -4,4 +4,4 @@ include_directories("${dcmjpls_SOURCE_DIR}/include" "${ofstd_SOURCE_DIR}/include
@@ -19,3 +30,6 @@ 

   

  -DCMTK_TARGET_LINK_MODULES(dcmjpls ofstd oflog dcmdata dcmimgle dcmimage dcmtkcharls)

  +DCMTK_TARGET_LINK_MODULES(dcmjpls ofstd oflog dcmdata dcmimgle dcmimage ${CHARLS_LIBS})

+ -- 

+ 2.39.2

+ 

0005-Correct-CharLS-API-call.patch 0005-3.6.4-Correct-CharLS-API-call.patch
file renamed
+6 -6
@@ -1,17 +1,17 @@ 

- From 1461a6c22fba7d5432ae676aecc2599c131abb1a Mon Sep 17 00:00:00 2001

+ From 01c6f3631e15ab4eb314d7f64b6f50c5ea17c11d Mon Sep 17 00:00:00 2001

  From: "Ankur Sinha (Ankur Sinha Gmail)" <sanjay.ankur@gmail.com>

  Date: Sun, 28 Jul 2019 18:30:46 +0100

- Subject: [PATCH 05/16] 3.6.4 Correct CharLS API call

+ Subject: [PATCH 05/22] Correct CharLS API call

  

  ---

   dcmjpls/libsrc/djcodece.cc | 4 ++--

   1 file changed, 2 insertions(+), 2 deletions(-)

  

  diff --git a/dcmjpls/libsrc/djcodece.cc b/dcmjpls/libsrc/djcodece.cc

- index 199f92489..49c66d2d2 100644

+ index 55a337caf..eb5986eb5 100644

  --- a/dcmjpls/libsrc/djcodece.cc

  +++ b/dcmjpls/libsrc/djcodece.cc

- @@ -664,7 +664,7 @@ OFCondition DJLSEncoderBase::compressRawFrame(

+ @@ -745,7 +745,7 @@ OFCondition DJLSEncoderBase::compressRawFrame(

   

       size_t bytesWritten = 0;

   
@@ -20,7 +20,7 @@ 

       result = DJLSError::convert(err);

   

       if (result.good())

- @@ -1071,7 +1071,7 @@ OFCondition DJLSEncoderBase::compressCookedFrame(

+ @@ -1151,7 +1151,7 @@ OFCondition DJLSEncoderBase::compressCookedFrame(

   

     size_t bytesWritten = 0;

   
@@ -30,5 +30,5 @@ 

   

     if (result.good())

  -- 

- 2.21.0

+ 2.39.2

  

0006-Remove-reference-to-bundled-CharLS.patch 0006-3.6.4-Remove-reference-to-bundled-CharLS.patch
file renamed
+3 -3
@@ -1,7 +1,7 @@ 

- From 0a1f6b7640ee558d6405bc33755ebf0b071878eb Mon Sep 17 00:00:00 2001

+ From c23b01c78084d20fb1e640eba47db2c2bf54e52d Mon Sep 17 00:00:00 2001

  From: "Ankur Sinha (Ankur Sinha Gmail)" <sanjay.ankur@gmail.com>

  Date: Sun, 28 Jul 2019 18:31:32 +0100

- Subject: [PATCH 06/16] 3.6.4 Remove reference to bundled CharLS

+ Subject: [PATCH 06/22] Remove reference to bundled CharLS

  

  ---

   dcmjpls/CMakeLists.txt | 2 +-
@@ -20,5 +20,5 @@ 

     add_subdirectory(${SUBDIR})

   endforeach()

  -- 

- 2.21.0

+ 2.39.2

  

0007-Update-JLS_ERROR-to-jpegls_error-in-CharLS-usage.patch 0007-3.6.4-Update-JLS_ERROR-to-jpegls_error-in-CharLS-usa.patch
file renamed
+8 -8
@@ -1,7 +1,7 @@ 

- From 42dbe6a06f87c9223ab7a968eb6140188af81e8d Mon Sep 17 00:00:00 2001

+ From 4481f1a3865832424b0f9dbcc8132cfc477d2b69 Mon Sep 17 00:00:00 2001

  From: "Ankur Sinha (Ankur Sinha Gmail)" <sanjay.ankur@gmail.com>

  Date: Sun, 28 Jul 2019 18:58:25 +0100

- Subject: [PATCH 07/16] 3.6.4 Update JLS_ERROR to jpegls_error in CharLS usage

+ Subject: [PATCH 07/22] Update JLS_ERROR to jpegls_error in CharLS usage

  

  ---

   dcmjpls/libsrc/djcodecd.cc | 3 ++-
@@ -10,7 +10,7 @@ 

   3 files changed, 6 insertions(+), 4 deletions(-)

  

  diff --git a/dcmjpls/libsrc/djcodecd.cc b/dcmjpls/libsrc/djcodecd.cc

- index a56f944fe..0a31ff974 100644

+ index 0cd5c0f14..13da255df 100644

  --- a/dcmjpls/libsrc/djcodecd.cc

  +++ b/dcmjpls/libsrc/djcodecd.cc

  @@ -38,6 +38,7 @@
@@ -21,7 +21,7 @@ 

   

   E_TransferSyntax DJLSLosslessDecoder::supportedTransferSyntax() const

   {

- @@ -382,7 +383,7 @@ OFCondition DJLSDecoderBase::decodeFrame(

+ @@ -402,7 +403,7 @@ OFCondition DJLSDecoderBase::decodeFrame(

     if (result.good())

     {

       JlsParameters params;
@@ -31,7 +31,7 @@ 

       err = JpegLsReadHeader(jlsData, compressedSize, &params);

       result = DJLSError::convert(err);

  diff --git a/dcmjpls/libsrc/djcodece.cc b/dcmjpls/libsrc/djcodece.cc

- index 49c66d2d2..98a9ceccb 100644

+ index eb5986eb5..f538e595b 100644

  --- a/dcmjpls/libsrc/djcodece.cc

  +++ b/dcmjpls/libsrc/djcodece.cc

  @@ -56,6 +56,7 @@
@@ -42,7 +42,7 @@ 

   

   BEGIN_EXTERN_C

   #ifdef HAVE_FCNTL_H

- @@ -664,7 +665,7 @@ OFCondition DJLSEncoderBase::compressRawFrame(

+ @@ -745,7 +746,7 @@ OFCondition DJLSEncoderBase::compressRawFrame(

   

       size_t bytesWritten = 0;

   
@@ -51,7 +51,7 @@ 

       result = DJLSError::convert(err);

   

       if (result.good())

- @@ -1071,7 +1072,7 @@ OFCondition DJLSEncoderBase::compressCookedFrame(

+ @@ -1151,7 +1152,7 @@ OFCondition DJLSEncoderBase::compressCookedFrame(

   

     size_t bytesWritten = 0;

   
@@ -74,5 +74,5 @@ 

       switch (error)

       {

  -- 

- 2.21.0

+ 2.39.2

  

0008-Correct-JpegLsReadHeader-arguments.patch 0008-3.6.4-correct-JpegLsReadHeader-arguments.patch
file renamed
+5 -5
@@ -1,17 +1,17 @@ 

- From ee71231260cb6f031ec3ad7401f202df42dd8968 Mon Sep 17 00:00:00 2001

+ From 92aa6564a2c77f0dfa743a5d14a1cdad118f8673 Mon Sep 17 00:00:00 2001

  From: "Ankur Sinha (Ankur Sinha Gmail)" <sanjay.ankur@gmail.com>

  Date: Sun, 28 Jul 2019 19:01:23 +0100

- Subject: [PATCH 08/16] 3.6.4 correct JpegLsReadHeader arguments

+ Subject: [PATCH 08/22] Correct JpegLsReadHeader arguments

  

  ---

   dcmjpls/libsrc/djcodecd.cc | 2 +-

   1 file changed, 1 insertion(+), 1 deletion(-)

  

  diff --git a/dcmjpls/libsrc/djcodecd.cc b/dcmjpls/libsrc/djcodecd.cc

- index 0a31ff974..3f906b783 100644

+ index 13da255df..38cd9cf4c 100644

  --- a/dcmjpls/libsrc/djcodecd.cc

  +++ b/dcmjpls/libsrc/djcodecd.cc

- @@ -385,7 +385,7 @@ OFCondition DJLSDecoderBase::decodeFrame(

+ @@ -405,7 +405,7 @@ OFCondition DJLSDecoderBase::decodeFrame(

       JlsParameters params;

       CharlsApiResultType err;

   
@@ -21,5 +21,5 @@ 

   

       if (result.good())

  -- 

- 2.21.0

+ 2.39.2

  

0009-Update-JlsParameters-for-new-CharLS.patch 0009-3.6.6-update-JlsParameters-for-new-CharLS.patch
file renamed
+16 -2
@@ -1,5 +1,16 @@ 

+ From dbb5406c3987531239f05a7aff51166c1ab6b521 Mon Sep 17 00:00:00 2001

+ From: "Ankur Sinha (Ankur Sinha Gmail)" <sanjay.ankur@gmail.com>

+ Date: Wed, 1 Mar 2023 22:46:27 -0600

+ Subject: [PATCH 09/22] Update JlsParameters for new CharLS

+ 

+ Co-authored-by: Alessio <alciregi@fedoraproject.org>

+ ---

+  dcmjpls/libsrc/djcodecd.cc | 4 ++--

+  dcmjpls/libsrc/djcodece.cc | 8 ++++----

+  2 files changed, 6 insertions(+), 6 deletions(-)

+ 

  diff --git a/dcmjpls/libsrc/djcodecd.cc b/dcmjpls/libsrc/djcodecd.cc

- index 182aa67..16701b9 100644

+ index 38cd9cf4c..ae71dc4f8 100644

  --- a/dcmjpls/libsrc/djcodecd.cc

  +++ b/dcmjpls/libsrc/djcodecd.cc

  @@ -413,8 +413,8 @@ OFCondition DJLSDecoderBase::decodeFrame(
@@ -14,7 +25,7 @@ 

   

       if (!result.good())

  diff --git a/dcmjpls/libsrc/djcodece.cc b/dcmjpls/libsrc/djcodece.cc

- index e7ce928..d7067a3 100644

+ index f538e595b..ee82fee79 100644

  --- a/dcmjpls/libsrc/djcodece.cc

  +++ b/dcmjpls/libsrc/djcodece.cc

  @@ -652,13 +652,13 @@ OFCondition DJLSEncoderBase::compressRawFrame(
@@ -43,3 +54,6 @@ 

     }

   #endif

   

+ -- 

+ 2.39.2

+ 

0010-Correct-JpegLsDecode-arguments-for-CharLS-2.patch 0010-3.6.4-correct-JpegLsDecode-arguments-for-CharLS-2.patch
file renamed
+5 -5
@@ -1,17 +1,17 @@ 

- From dd0121ad580126742679c691b52549414baef36f Mon Sep 17 00:00:00 2001

+ From 5afcb43e682b39af412d87943c520899e92dab8c Mon Sep 17 00:00:00 2001

  From: "Ankur Sinha (Ankur Sinha Gmail)" <sanjay.ankur@gmail.com>

  Date: Sun, 28 Jul 2019 19:06:44 +0100

- Subject: [PATCH 10/16] 3.6.4 correct JpegLsDecode arguments for CharLS 2

+ Subject: [PATCH 10/22] Correct JpegLsDecode arguments for CharLS 2

  

  ---

   dcmjpls/libsrc/djcodecd.cc | 2 +-

   1 file changed, 1 insertion(+), 1 deletion(-)

  

  diff --git a/dcmjpls/libsrc/djcodecd.cc b/dcmjpls/libsrc/djcodecd.cc

- index ece4a5e10..6f1ddba61 100644

+ index ae71dc4f8..4df12ced5 100644

  --- a/dcmjpls/libsrc/djcodecd.cc

  +++ b/dcmjpls/libsrc/djcodecd.cc

- @@ -403,7 +403,7 @@ OFCondition DJLSDecoderBase::decodeFrame(

+ @@ -423,7 +423,7 @@ OFCondition DJLSDecoderBase::decodeFrame(

       }

       else

       {
@@ -21,5 +21,5 @@ 

         delete[] jlsData;

   

  -- 

- 2.21.0

+ 2.39.2

  

0011-Update-ilv-for-new-CharLS.patch 0011-3.6.6-update-ilv-for-new-CharLS.patch
file renamed
+24 -10
@@ -1,8 +1,19 @@ 

+ From abd6b090620f1c120d9e65c3367477ba866a3a3e Mon Sep 17 00:00:00 2001

+ From: "Ankur Sinha (Ankur Sinha Gmail)" <sanjay.ankur@gmail.com>

+ Date: Wed, 1 Mar 2023 22:49:16 -0600

+ Subject: [PATCH 11/22] Update ilv for new CharLS

+ 

+ Co-authored-by: Alessio <alciregi@fedoraproject.org>

+ ---

+  dcmjpls/libsrc/djcodecd.cc |  4 +--

+  dcmjpls/libsrc/djcodece.cc | 52 +++++++++++++++++++-------------------

+  2 files changed, 28 insertions(+), 28 deletions(-)

+ 

  diff --git a/dcmjpls/libsrc/djcodecd.cc b/dcmjpls/libsrc/djcodecd.cc

- index fc0df5c..3627ca3 100644

+ index 4df12ced5..9e076a8a5 100644

  --- a/dcmjpls/libsrc/djcodecd.cc

  +++ b/dcmjpls/libsrc/djcodecd.cc

- @@ -428,7 +428,7 @@ OFCondition DJLSDecoderBase::decodeFrame(

+ @@ -429,7 +429,7 @@ OFCondition DJLSDecoderBase::decodeFrame(

   

         if (result.good() && imageSamplesPerPixel == 3)

         {
@@ -11,7 +22,7 @@ 

           {

             // The dataset says this should be planarConfiguration == 1, but

             // it isn't -> convert it.

- @@ -438,7 +438,7 @@ OFCondition DJLSDecoderBase::decodeFrame(

+ @@ -439,7 +439,7 @@ OFCondition DJLSDecoderBase::decodeFrame(

             else

               result = createPlanarConfiguration1Word(OFreinterpret_cast(Uint16*, buffer), imageColumns, imageRows);

           }
@@ -21,10 +32,10 @@ 

             // The dataset says this should be planarConfiguration == 0, but

             // it isn't -> convert it.

  diff --git a/dcmjpls/libsrc/djcodece.cc b/dcmjpls/libsrc/djcodece.cc

- index 5e82662..9aa2a2d 100644

+ index ee82fee79..58cdbdedd 100644

  --- a/dcmjpls/libsrc/djcodece.cc

  +++ b/dcmjpls/libsrc/djcodece.cc

- @@ -671,15 +671,15 @@ OFCondition DJLSEncoderBase::compressRawFrame(

+ @@ -672,15 +672,15 @@ OFCondition DJLSEncoderBase::compressRawFrame(

     else

       return EC_IllegalCall;

   
@@ -43,7 +54,7 @@ 

         break;

       default:

         return EC_IllegalCall;

- @@ -688,14 +688,14 @@ OFCondition DJLSEncoderBase::compressRawFrame(

+ @@ -689,14 +689,14 @@ OFCondition DJLSEncoderBase::compressRawFrame(

     switch (djcp->getJplsInterleaveMode())

     {

       case DJLSCodecParameter::interleaveSample:
@@ -61,7 +72,7 @@ 

         break;

   #endif

       case DJLSCodecParameter::interleaveDefault:

- @@ -703,30 +703,30 @@ OFCondition DJLSEncoderBase::compressRawFrame(

+ @@ -704,30 +704,30 @@ OFCondition DJLSEncoderBase::compressRawFrame(

         // In default mode we just never convert the image to another

         // interleave-mode. Instead, we use what is already there.

   #ifdef ENABLE_DCMJPLS_INTERLEAVE_NONE
@@ -102,7 +113,7 @@ 

         result = convertToUninterleaved(frameBuffer, framePointer, samplesPerPixel, width, height, bitsAllocated);

       else

         /* For CharLS, sample-interleaved and line-interleaved is both expected to

- @@ -1091,9 +1091,9 @@ OFCondition DJLSEncoderBase::compressCookedFrame(

+ @@ -1092,9 +1092,9 @@ OFCondition DJLSEncoderBase::compressCookedFrame(

     OFBitmanipTemplate<char>::zeroMem((char *) &jls_params, sizeof(jls_params));

     jls_params.height = height;

     jls_params.width = width;
@@ -114,7 +125,7 @@ 

     // No idea what this one does, but I don't think DICOM says anything about it

     jls_params.colorTransform = 0;

   

- @@ -1108,27 +1108,27 @@ OFCondition DJLSEncoderBase::compressCookedFrame(

+ @@ -1109,27 +1109,27 @@ OFCondition DJLSEncoderBase::compressCookedFrame(

     switch (djcp->getJplsInterleaveMode())

     {

       case DJLSCodecParameter::interleaveSample:
@@ -149,7 +160,7 @@ 

     }

   

     Uint8 *frameBuffer = NULL;

- @@ -1136,7 +1136,7 @@ OFCondition DJLSEncoderBase::compressCookedFrame(

+ @@ -1137,7 +1137,7 @@ OFCondition DJLSEncoderBase::compressCookedFrame(

   

   #ifdef ENABLE_DCMJPLS_INTERLEAVE_NONE

     // Do we have to convert the image to color-by-plane now?
@@ -158,3 +169,6 @@ 

     {

       DCMJPLS_DEBUG("Converting image from color-by-pixel to color-by-plane");

   

+ -- 

+ 2.39.2

+ 

0012-Correct-extra-include-for-CharLS.patch 0012-3.6.4-Correct-extra-include-for-CharLS.patch
file renamed
+5 -5
@@ -1,7 +1,7 @@ 

- From 7b20ec2b206ac325bb8b18aaad2ef704959abb7e Mon Sep 17 00:00:00 2001

+ From a6b007dd200e8d4079545639a9ebcf148b1d0b9d Mon Sep 17 00:00:00 2001

  From: "Ankur Sinha (Ankur Sinha Gmail)" <sanjay.ankur@gmail.com>

  Date: Sun, 28 Jul 2019 19:43:48 +0100

- Subject: [PATCH 12/16] 3.6.4 Correct extra include for CharLS

+ Subject: [PATCH 12/22] Correct extra include for CharLS

  

  ---

   dcmjpls/libsrc/djcodecd.cc | 2 +-
@@ -10,7 +10,7 @@ 

   3 files changed, 3 insertions(+), 2 deletions(-)

  

  diff --git a/dcmjpls/libsrc/djcodecd.cc b/dcmjpls/libsrc/djcodecd.cc

- index 2e36680cd..b2ad93d60 100644

+ index 9e076a8a5..7fd00121b 100644

  --- a/dcmjpls/libsrc/djcodecd.cc

  +++ b/dcmjpls/libsrc/djcodecd.cc

  @@ -38,7 +38,7 @@
@@ -23,7 +23,7 @@ 

   E_TransferSyntax DJLSLosslessDecoder::supportedTransferSyntax() const

   {

  diff --git a/dcmjpls/libsrc/djcodece.cc b/dcmjpls/libsrc/djcodece.cc

- index 9e06d842a..d91965c25 100644

+ index 58cdbdedd..4eb0e8441 100644

  --- a/dcmjpls/libsrc/djcodece.cc

  +++ b/dcmjpls/libsrc/djcodece.cc

  @@ -56,7 +56,7 @@
@@ -48,5 +48,5 @@ 

   /** Helper class for converting between dcmjpls and CharLS error codes

    */

  -- 

- 2.21.0

+ 2.39.2

  

0013-Update-errors-to-use-enum-class-in-CharLS-2.patch 0013-3.6.4-Update-errors-to-use-enum-class-in-CharLS-2.patch
file renamed
+3 -3
@@ -1,7 +1,7 @@ 

- From f937b086b59f2d882067ffb280243bc286b18a97 Mon Sep 17 00:00:00 2001

+ From c26b3865c54f0b26ac9b4f7e2132d3c1a897b629 Mon Sep 17 00:00:00 2001

  From: "Ankur Sinha (Ankur Sinha Gmail)" <sanjay.ankur@gmail.com>

  Date: Sun, 28 Jul 2019 21:26:28 +0100

- Subject: [PATCH 13/16] 3.6.4 Update errors to use enum class in CharLS 2

+ Subject: [PATCH 13/22] Update errors to use enum class in CharLS 2

  

  ---

   dcmjpls/libsrc/djerror.h | 20 ++++++++++----------
@@ -48,5 +48,5 @@ 

         default:

           return EC_IllegalParameter;

  -- 

- 2.21.0

+ 2.39.2

  

0014-Define-BYTE-for-CharLS.patch 0014-3.6.4-define-BYTE-for-CharLS.patch
file renamed
+4 -4
@@ -1,14 +1,14 @@ 

- From 678ec1ddce7370aecaa1e46e9f421cb550edd613 Mon Sep 17 00:00:00 2001

+ From ccaba3f6088c26bd3dd0a921cc2df7a7ed7d0f5f Mon Sep 17 00:00:00 2001

  From: "Ankur Sinha (Ankur Sinha Gmail)" <sanjay.ankur@gmail.com>

  Date: Sun, 28 Jul 2019 22:20:51 +0100

- Subject: [PATCH 14/16] 3.6.4 define BYTE for CharLS

+ Subject: [PATCH 14/22] Define BYTE for CharLS

  

  ---

   dcmjpls/libsrc/djcodece.cc | 3 +++

   1 file changed, 3 insertions(+)

  

  diff --git a/dcmjpls/libsrc/djcodece.cc b/dcmjpls/libsrc/djcodece.cc

- index d91965c25..c6f4a5596 100644

+ index 4eb0e8441..0d18a0a97 100644

  --- a/dcmjpls/libsrc/djcodece.cc

  +++ b/dcmjpls/libsrc/djcodece.cc

  @@ -70,6 +70,9 @@ BEGIN_EXTERN_C
@@ -22,5 +22,5 @@ 

   E_TransferSyntax DJLSLosslessEncoder::supportedTransferSyntax() const

   {

  -- 

- 2.21.0

+ 2.39.2

  

0015-Update-colorTransformation-for-CharLS-2.patch 0015-3.6.6-Update-colorTransformation-for-CharLS-2.patch
file renamed
+14 -1
@@ -1,5 +1,15 @@ 

+ From 3a4be5847187fc2456f3afe31a5e399358f0d655 Mon Sep 17 00:00:00 2001

+ From: "Ankur Sinha (Ankur Sinha Gmail)" <sanjay.ankur@gmail.com>

+ Date: Wed, 1 Mar 2023 23:00:38 -0600

+ Subject: [PATCH 15/22] Update colorTransformation for CharLS 2

+ 

+ Co-authored-by: Alessio <alciregi@fedoraproject.org>

+ ---

+  dcmjpls/libsrc/djcodece.cc | 4 ++--

+  1 file changed, 2 insertions(+), 2 deletions(-)

+ 

  diff --git a/dcmjpls/libsrc/djcodece.cc b/dcmjpls/libsrc/djcodece.cc

- index 91c8063..e332355 100644

+ index 0d18a0a97..c53cdd0aa 100644

  --- a/dcmjpls/libsrc/djcodece.cc

  +++ b/dcmjpls/libsrc/djcodece.cc

  @@ -661,7 +661,7 @@ OFCondition DJLSEncoderBase::compressRawFrame(
@@ -20,3 +30,6 @@ 

   

     // This was already checked for a sane value above

     jls_params.components = samplesPerPixel;

+ -- 

+ 2.39.2

+ 

0016-Update-JpegLsEncode-for-CharLS-2.patch 0016-3.6.4-Update-JpegLsEncode-for-CharLS-2.patch
file renamed
+6 -6
@@ -1,17 +1,17 @@ 

- From a9c64548cd7e8e2dc8bf6b5759a7a16ddae1169a Mon Sep 17 00:00:00 2001

+ From 0c773390f7000181666e73a2c0ac15a018b90e5b Mon Sep 17 00:00:00 2001

  From: "Ankur Sinha (Ankur Sinha Gmail)" <sanjay.ankur@gmail.com>

  Date: Sun, 28 Jul 2019 22:48:27 +0100

- Subject: [PATCH 16/16] 3.6.4 Update JpegLsEncode for CharLS 2

+ Subject: [PATCH 16/22] Update JpegLsEncode for CharLS 2

  

  ---

   dcmjpls/libsrc/djcodece.cc | 4 ++--

   1 file changed, 2 insertions(+), 2 deletions(-)

  

  diff --git a/dcmjpls/libsrc/djcodece.cc b/dcmjpls/libsrc/djcodece.cc

- index 707b94dcb..87120a5b9 100644

+ index c53cdd0aa..be455103d 100644

  --- a/dcmjpls/libsrc/djcodece.cc

  +++ b/dcmjpls/libsrc/djcodece.cc

- @@ -668,7 +668,7 @@ OFCondition DJLSEncoderBase::compressRawFrame(

+ @@ -749,7 +749,7 @@ OFCondition DJLSEncoderBase::compressRawFrame(

   

       size_t bytesWritten = 0;

   
@@ -20,7 +20,7 @@ 

       result = DJLSError::convert(err);

   

       if (result.good())

- @@ -1075,7 +1075,7 @@ OFCondition DJLSEncoderBase::compressCookedFrame(

+ @@ -1155,7 +1155,7 @@ OFCondition DJLSEncoderBase::compressCookedFrame(

   

     size_t bytesWritten = 0;

   
@@ -30,5 +30,5 @@ 

   

     if (result.good())

  -- 

- 2.21.0

+ 2.39.2

  

0017-Increase-sleep-for-tests.patch 0017-3.6.6-Increased-sleep-fraction-for-dcmtls_scp_pool_tls-test.patch
file renamed
+15 -2
@@ -1,5 +1,15 @@ 

+ From 6f8d21d803c5e5d2fab5cbff97b2d40793fa5701 Mon Sep 17 00:00:00 2001

+ From: Alessio <alciregi@fedoraproject.org>

+ Date: Thu, 2 Mar 2023 00:04:18 -0600

+ Subject: [PATCH 17/22] 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 7ae4ff5..a9601c4 100644

+ index 7ae4ff53a..3508b6da8 100644

  --- a/dcmnet/tests/tscusession.cc

  +++ b/dcmnet/tests/tscusession.cc

  @@ -280,7 +280,7 @@ void configure_scp_for_sop_class(DcmSCPConfig& cfg,
@@ -28,7 +38,7 @@ 

   

       // TODO: Test C-GET

  diff --git a/dcmtls/tests/tscuscptls.cc b/dcmtls/tests/tscuscptls.cc

- index ef0cb22..cb0fb7d 100644

+ index ef0cb2232..f054e8b18 100644

  --- a/dcmtls/tests/tscuscptls.cc

  +++ b/dcmtls/tests/tscuscptls.cc

  @@ -318,7 +318,7 @@ OFTEST_FLAGS(dcmtls_scp_tls, EF_None)
@@ -58,3 +68,6 @@ 

   

       for (OFVector<TestTLSSCU*>::const_iterator it2 = scus.begin(); it2 != scus.end(); ++it2)

       {

+ -- 

+ 2.39.2

+ 

0018-Fix-for-big-endian-systems.patch 0018-3.6.6-Fix-for-Big-Endian-systems.patch
file renamed
+31 -27
@@ -1,16 +1,28 @@ 

+ From 3fa9f67fdaeee2f13efe93c93435a3e6462e9188 Mon Sep 17 00:00:00 2001

+ From: Alessio <alciregi@fedoraproject.org>

+ Date: Thu, 2 Mar 2023 00:06:34 -0600

+ Subject: [PATCH 18/22] Fix for big-endian systems

+ 

+ ---

+  dcmect/tests/t_roundtrip.cc | 15 +++++++++++----

+  dcmseg/tests/troundtrip.cc  | 10 ++++++++--

+  2 files changed, 19 insertions(+), 6 deletions(-)

+ 

  diff --git a/dcmect/tests/t_roundtrip.cc b/dcmect/tests/t_roundtrip.cc

- index 3cdeb90..8b44f67 100644

+ index 3cdeb907a..26839bdcc 100644

  --- a/dcmect/tests/t_roundtrip.cc

  +++ b/dcmect/tests/t_roundtrip.cc

- @@ -28,6 +28,7 @@

+ @@ -28,6 +28,9 @@

   

   #include "dcmtk/dcmect/enhanced_ct.h"

   

  +#include "dcmtk/dcmdata/dcxfer.h"

+ +#include "dcmtk/dcmdata/dcswap.h"

+ +

   #include "dcmtk/dcmfg/concatenationcreator.h"

   #include "dcmtk/dcmfg/concatenationloader.h"

   #include "dcmtk/dcmfg/fgctacquisitiondetails.h"

- @@ -295,7 +296,6 @@ static void addSharedFGs(EctEnhancedCT* ct)

+ @@ -295,7 +298,6 @@ static void addSharedFGs(EctEnhancedCT* ct)

           OFCHECK(exp_item->setCTDIVol(0.1).good());

           CodeSequenceMacro* phantom_item = new CodeSequenceMacro("113682", "DCM", "ACR Accreditation Phantom - CT");

           exp_item->getCTDIPhantomTypeCodeSequence().push_back(phantom_item);
@@ -18,7 +30,16 @@ 

           OFCHECK(exp_item->setExposureInMas(0.3).good());

           OFCHECK(exp_item->setExposureModulationType("WEIRD").good());

           OFCHECK(exp_item->setExposureTimeInMs(0.4).good());

- @@ -658,7 +658,11 @@ static void prepareExpectedDump()

+ @@ -619,6 +621,8 @@ static void checkConcatenationInstance(size_t numInstance, EctEnhancedCT* srcIns

+          // Check that all pixels are set to their original source instances frame number (starting from 1)

+          for (size_t pix = 0; pix < NUM_PIXELS_PER_FRAME; pix++)

+          {

+ +            // We need to swap the 16 bit value if the test runs on big endian platforms

+ +            swapIfNecessary(gLocalByteOrder, EBO_LittleEndian, &frame[pix], 2, sizeof(Uint16));

+              OFCHECK(frame[pix] == numInstance + 1);

+          }

+          delete concat;

+ @@ -658,7 +662,11 @@ static void prepareExpectedDump()

   {

       EXPECTED_DUMP += "\n";

       EXPECTED_DUMP += "# Dicom-Data-Set\n";
@@ -31,7 +52,7 @@ 

       EXPECTED_DUMP += "(0008,0008) CS [ORIGINAL\\PRIMARY\\VOLUME\\MAXIMUM]        #  32, 4 ImageType\n";

       EXPECTED_DUMP += "(0008,0016) UI =EnhancedCTImageStorage                  #  28, 1 SOPClassUID\n";

       EXPECTED_DUMP

- @@ -789,7 +793,7 @@ static void prepareExpectedDump()

+ @@ -789,7 +797,7 @@ static void prepareExpectedDump()

       EXPECTED_DUMP += "      (fffe,e00d) na (ItemDelimitationItem for re-encoding)   #   0, 0 ItemDelimitationItem\n";

       EXPECTED_DUMP += "    (fffe,e0dd) na (SequenceDelimitationItem for re-encod.) #   0, 0 SequenceDelimitationItem\n";

       EXPECTED_DUMP += "    (0018,9321) SQ (Sequence with explicit length #=1)      #   0, 1 CTExposureSequence\n";
@@ -40,7 +61,7 @@ 

       EXPECTED_DUMP += "        (0018,115e) DS [0.5]                                    #   4, 1 "

                        "ImageAndFluoroscopyAreaDoseProduct\n";

       EXPECTED_DUMP

- @@ -807,7 +811,6 @@ static void prepareExpectedDump()

+ @@ -807,7 +815,6 @@ static void prepareExpectedDump()

           += "        (fffe,e0dd) na (SequenceDelimitationItem for re-encod.) #   0, 0 SequenceDelimitationItem\n";

       EXPECTED_DUMP

           += "        (0018,9323) CS [WEIRD]                                  #   6, 1 ExposureModulationType\n";
@@ -49,7 +70,7 @@ 

       EXPECTED_DUMP += "        (0018,9330) FD 0.7                                      #   8, 1 XRayTubeCurrentInmA\n";

       EXPECTED_DUMP += "        (0018,9332) FD 0.3                                      #   8, 1 ExposureInmAs\n";

  diff --git a/dcmseg/tests/troundtrip.cc b/dcmseg/tests/troundtrip.cc

- index 472eaf1..8a605ab 100644

+ index 472eaf1ef..8a605ab68 100644

  --- a/dcmseg/tests/troundtrip.cc

  +++ b/dcmseg/tests/troundtrip.cc

  @@ -31,6 +31,7 @@
@@ -90,23 +111,6 @@ 

       EXPECTED_DUMP += "(0008,0008) CS [DERIVED\\PRIMARY]                        #  16, 2 ImageType\n";

       EXPECTED_DUMP += "(0008,0016) UI =SegmentationStorage                     #  28, 1 SOPClassUID\n";

       EXPECTED_DUMP

- --- a/dcmect/tests/t_roundtrip.cc

- +++ b/dcmect/tests/t_roundtrip.cc

- @@ -29,6 +29,8 @@

-  #include "dcmtk/dcmect/enhanced_ct.h"

-  

-  #include "dcmtk/dcmdata/dcxfer.h"

- +#include "dcmtk/dcmdata/dcswap.h"

- +

-  #include "dcmtk/dcmfg/concatenationcreator.h"

-  #include "dcmtk/dcmfg/concatenationloader.h"

-  #include "dcmtk/dcmfg/fgctacquisitiondetails.h"

- @@ -619,6 +621,8 @@ static void checkConcatenationInstance(size_t numInstance, EctEnhancedCT* srcIns

-          // Check that all pixels are set to their original source instances frame number (starting from 1)

-          for (size_t pix = 0; pix < NUM_PIXELS_PER_FRAME; pix++)

-          {

- +            // We need to swap the 16 bit value if the test runs on big endian platforms

- +            swapIfNecessary(gLocalByteOrder, EBO_LittleEndian, &frame[pix], 2, sizeof(Uint16));

-              OFCHECK(frame[pix] == numInstance + 1);

-          }

-          delete concat;

+ -- 

+ 2.39.2

+ 

@@ -0,0 +1,568 @@ 

+ From 2b026afd64f077b4f6276afc2fa9a885b8b47d38 Mon Sep 17 00:00:00 2001

+ From: Michael Onken <onken@open-connections.de>

+ Date: Sat, 2 Oct 2021 00:29:56 +0200

+ Subject: [PATCH 19/22] [CVE-2021-41687, CVE-2021-41688, CVE-2021-41690] Fixed

+  poss. NULL pointer dereference/double free.

+ 

+ Thanks to Jinsheng Ba <bajinsheng@u.nus.edu> for the report and some patches.

+ 

+ (cherry picked from commit a9697dfeb672b0b9412c00c7d36d801e27ec85cb)

+ ---

+  .../dcmtk/dcmnet}/dulstruc.h                  |   8 ++

+  dcmnet/include/dcmtk/dcmnet/helpers.h         |  38 +++++++

+  dcmnet/libsrc/CMakeLists.txt                  |   2 +-

+  dcmnet/libsrc/Makefile.in                     |   2 +-

+  dcmnet/libsrc/assoc.cc                        |  23 +---

+  dcmnet/libsrc/dcuserid.cc                     |   4 +-

+  dcmnet/libsrc/dul.cc                          |   2 +-

+  dcmnet/libsrc/dulconst.cc                     |   2 +-

+  dcmnet/libsrc/dulextra.cc                     |   2 +-

+  dcmnet/libsrc/dulfsm.cc                       |  51 +--------

+  dcmnet/libsrc/dulparse.cc                     | 100 +++++++++++++-----

+  dcmnet/libsrc/dulpres.cc                      |   2 +-

+  dcmnet/libsrc/helpers.cc                      |  71 +++++++++++++

+  13 files changed, 201 insertions(+), 106 deletions(-)

+  rename dcmnet/{libsrc => include/dcmtk/dcmnet}/dulstruc.h (98%)

+  create mode 100644 dcmnet/include/dcmtk/dcmnet/helpers.h

+  create mode 100644 dcmnet/libsrc/helpers.cc

+ 

+ diff --git a/dcmnet/libsrc/dulstruc.h b/dcmnet/include/dcmtk/dcmnet/dulstruc.h

+ similarity index 98%

+ rename from dcmnet/libsrc/dulstruc.h

+ rename to dcmnet/include/dcmtk/dcmnet/dulstruc.h

+ index 22da6ece1..6ac9a8f5d 100644

+ --- a/dcmnet/libsrc/dulstruc.h

+ +++ b/dcmnet/include/dcmtk/dcmnet/dulstruc.h

+ @@ -71,6 +71,11 @@

+  #include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */

+  #include "dcmtk/dcmnet/extneg.h"

+  #include "dcmtk/dcmnet/dcuserid.h"

+ +#include "dcmtk/dcmnet/dicom.h"

+ +#include "dcmtk/dcmnet/dntypes.h"

+ +#include "dcmtk/dcmnet/dul.h"

+ +#include "dcmtk/dcmnet/lst.h"

+ +

+  

+  class DcmTransportConnection;

+  class DcmTransportLayer;

+ @@ -290,6 +295,9 @@ typedef struct dul_datapdu {

+      DUL_PRESENTATIONDATAVALUE presentationDataValue;

+  }   DUL_DATAPDU;

+  

+ +

+ +

+ +

+  #define DUL_PROTOCOL      (unsigned short) 0x01

+  

+  #define DUL_TYPEAPPLICATIONCONTEXT  (unsigned char)0x10

+ diff --git a/dcmnet/include/dcmtk/dcmnet/helpers.h b/dcmnet/include/dcmtk/dcmnet/helpers.h

+ new file mode 100644

+ index 000000000..7d7e382be

+ --- /dev/null

+ +++ b/dcmnet/include/dcmtk/dcmnet/helpers.h

+ @@ -0,0 +1,38 @@

+ +/*

+ + *

+ + *  Copyright (C) 2021, OFFIS e.V.

+ + *  All rights reserved.  See COPYRIGHT file for details.

+ + *

+ + *  This software and supporting documentation were partly developed by

+ + *

+ + *    OFFIS e.V.

+ + *    R&D Division Health

+ + *    Escherweg 2

+ + *    D-26121 Oldenburg, Germany

+ + *

+ + *

+ + *  Module: dcmnet

+ + *

+ + *  Author: Michael Onken

+ + *

+ + *  Purpose: Collection of helper functions

+ + *

+ + */

+ +

+ +#ifndef DCMHET_HELPERS_H

+ +#define DCMHET_HELPERS_H

+ +

+ +#include "dcmtk/ofstd/ofcond.h"

+ +#include "dcmtk/dcmnet/dulstruc.h"

+ +

+ +struct T_ASC_Parameters;

+ +class LST_HEAD;

+ +

+ +

+ +void

+ +destroyPresentationContextList(LST_HEAD ** l);

+ +

+ +void

+ +destroyUserInformationLists(DUL_USERINFO * userInfo);

+ +

+ +#endif

+ diff --git a/dcmnet/libsrc/CMakeLists.txt b/dcmnet/libsrc/CMakeLists.txt

+ index ed902ddc1..ee39d0f14 100644

+ --- a/dcmnet/libsrc/CMakeLists.txt

+ +++ b/dcmnet/libsrc/CMakeLists.txt

+ @@ -1,5 +1,5 @@

+  # create library from source files

+ -DCMTK_ADD_LIBRARY(dcmnet assoc cond dcasccff dcasccfg dccfenmp dccfpcmp dccfprmp dccfrsmp dccftsmp dccfuidh dcmlayer dcmtrans dcompat dimcancl dimcmd dimdump dimecho dimfind dimget dimmove dimse dimstore diutil dul dulconst dulextra dulfsm dulparse dulpres extneg lst dfindscu dstorscp dstorscu dcuserid scu scp scpthrd scpcfg scppool dwrap)

+ +DCMTK_ADD_LIBRARY(dcmnet assoc cond dcasccff dcasccfg dccfenmp dccfpcmp dccfprmp dccfrsmp dccftsmp dccfuidh dcmlayer dcmtrans dcompat dimcancl dimcmd dimdump dimecho dimfind dimget dimmove dimse dimstore diutil dul dulconst dulextra dulfsm dulparse dulpres extneg helpers lst dfindscu dstorscp dstorscu dcuserid scu scp scpthrd scpcfg scppool dwrap)

+  

+  DCMTK_TARGET_LINK_MODULES(dcmnet ofstd oflog dcmdata)

+  DCMTK_TARGET_LINK_LIBRARIES(dcmnet ${WRAP_LIBS})

+ diff --git a/dcmnet/libsrc/Makefile.in b/dcmnet/libsrc/Makefile.in

+ index 66d8c527b..d767bea35 100644

+ --- a/dcmnet/libsrc/Makefile.in

+ +++ b/dcmnet/libsrc/Makefile.in

+ @@ -25,7 +25,7 @@ objs = assoc.o cond.o dcompat.o dimcancl.o dimcmd.o dimdump.o dimecho.o \

+  	dulfsm.o dulparse.o dulpres.o dul.o lst.o extneg.o dimget.o dcmlayer.o \

+  	dcmtrans.o dcasccfg.o dcasccff.o dccfuidh.o dccftsmp.o dccfpcmp.o \

+  	dccfrsmp.o dccfenmp.o dccfprmp.o dfindscu.o dstorscp.o dstorscu.o \

+ -	dcuserid.o scu.o scp.o scpcfg.o scpthrd.o scppool.o dwrap.o

+ +	dcuserid.o helper.o scu.o scp.o scpcfg.o scpthrd.o scppool.o dwrap.o

+  

+  library = libdcmnet.$(LIBEXT)

+  

+ diff --git a/dcmnet/libsrc/assoc.cc b/dcmnet/libsrc/assoc.cc

+ index 6dbe4ef4d..a97f10699 100644

+ --- a/dcmnet/libsrc/assoc.cc

+ +++ b/dcmnet/libsrc/assoc.cc

+ @@ -125,6 +125,7 @@

+  #include "dcmtk/ofstd/ofconsol.h"

+  #include "dcmtk/ofstd/ofstd.h"

+  #include "dcmtk/dcmnet/dcmtrans.h"

+ +#include "dcmtk/dcmnet/helpers.h"

+  

+  /*

+  ** Constant Definitions

+ @@ -343,25 +344,6 @@ ASC_createAssociationParameters(T_ASC_Parameters ** params,

+      return EC_Normal;

+  }

+  

+ -static void

+ -destroyPresentationContextList(LST_HEAD ** lst)

+ -{

+ -    DUL_PRESENTATIONCONTEXT *pc;

+ -    DUL_TRANSFERSYNTAX *ts;

+ -

+ -    if ((lst == NULL) || (*lst == NULL))

+ -        return;

+ -    while ((pc = (DUL_PRESENTATIONCONTEXT*) LST_Dequeue(lst)) != NULL) {

+ -        if (pc->proposedTransferSyntax != NULL) {

+ -            while ((ts = (DUL_TRANSFERSYNTAX*) LST_Dequeue(&pc->proposedTransferSyntax)) != NULL) {

+ -                free(ts);

+ -            }

+ -            LST_Destroy(&pc->proposedTransferSyntax);

+ -        }

+ -        free(pc);

+ -    }

+ -    LST_Destroy(lst);

+ -}

+  

+  OFCondition

+  ASC_destroyAssociationParameters(T_ASC_Parameters ** params)

+ @@ -1706,8 +1688,7 @@ ASC_destroyAssociation(T_ASC_Association ** association)

+      }

+  

+      if ((*association)->params != NULL) {

+ -        cond = ASC_destroyAssociationParameters(&(*association)->params);

+ -        if (cond.bad()) return cond;

+ +        ASC_destroyAssociationParameters(&(*association)->params);

+      }

+  

+      if ((*association)->sendPDVBuffer != NULL)

+ diff --git a/dcmnet/libsrc/dcuserid.cc b/dcmnet/libsrc/dcuserid.cc

+ index 6a2d72a20..f1530fe79 100644

+ --- a/dcmnet/libsrc/dcuserid.cc

+ +++ b/dcmnet/libsrc/dcuserid.cc

+ @@ -1,6 +1,6 @@

+  /*

+   *

+ - *  Copyright (C) 1997-2018, OFFIS e.V.

+ + *  Copyright (C) 1997-2021, OFFIS e.V.

+   *  All rights reserved.  See COPYRIGHT file for details.

+   *

+   *  This software and supporting documentation were developed by

+ @@ -23,7 +23,7 @@

+  #include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */

+  #include "dcmtk/dcmnet/dcuserid.h"

+  #include "dcmtk/dcmnet/dul.h"

+ -#include "dulstruc.h"

+ +#include "dcmtk/dcmnet/dulstruc.h"

+  

+  /* ************************************************************************* */

+  /*       Implementation of class UserIdentityNegotiationSubItem              */

+ diff --git a/dcmnet/libsrc/dul.cc b/dcmnet/libsrc/dul.cc

+ index b8e9cc044..38a8d730e 100644

+ --- a/dcmnet/libsrc/dul.cc

+ +++ b/dcmnet/libsrc/dul.cc

+ @@ -142,7 +142,7 @@ END_EXTERN_C

+  #include "dcmtk/ofstd/ofstd.h"

+  

+  #include "dcmtk/dcmnet/dul.h"

+ -#include "dulstruc.h"

+ +#include "dcmtk/dcmnet/dulstruc.h"

+  #include "dulpriv.h"

+  #include "dulfsm.h"

+  #include "dcmtk/dcmnet/dcmtrans.h"

+ diff --git a/dcmnet/libsrc/dulconst.cc b/dcmnet/libsrc/dulconst.cc

+ index c0643c2bc..13738e8ea 100644

+ --- a/dcmnet/libsrc/dulconst.cc

+ +++ b/dcmnet/libsrc/dulconst.cc

+ @@ -77,7 +77,7 @@

+  #include "dcmtk/dcmnet/diutil.h"

+  #include "dcmtk/dcmnet/lst.h"

+  #include "dcmtk/dcmnet/dul.h"

+ -#include "dulstruc.h"

+ +#include "dcmtk/dcmnet/dulstruc.h"

+  #include "dulpriv.h"

+  #include "dcmtk/ofstd/ofconsol.h"

+  

+ diff --git a/dcmnet/libsrc/dulextra.cc b/dcmnet/libsrc/dulextra.cc

+ index 9845f3e4c..bec14fc2b 100644

+ --- a/dcmnet/libsrc/dulextra.cc

+ +++ b/dcmnet/libsrc/dulextra.cc

+ @@ -102,7 +102,7 @@

+  #include "dcmtk/dcmnet/lst.h"

+  #include "dcmtk/dcmnet/cond.h"

+  #include "dcmtk/dcmnet/dul.h"

+ -#include "dulstruc.h"

+ +#include "dcmtk/dcmnet/dulstruc.h"

+  #include "dulpriv.h"

+  #include "dcmtk/dcmnet/dcmtrans.h"

+  #include "dcmtk/dcmnet/diutil.h"

+ diff --git a/dcmnet/libsrc/dulfsm.cc b/dcmnet/libsrc/dulfsm.cc

+ index 91dcc7fcb..9bbe3462a 100644

+ --- a/dcmnet/libsrc/dulfsm.cc

+ +++ b/dcmnet/libsrc/dulfsm.cc

+ @@ -113,7 +113,7 @@ END_EXTERN_C

+  #include "dcmtk/dcmnet/lst.h"

+  #include "dcmtk/dcmnet/cond.h"

+  #include "dcmtk/dcmnet/dul.h"

+ -#include "dulstruc.h"

+ +#include "dcmtk/dcmnet/dulstruc.h"

+  #include "dulpriv.h"

+  #include "dulfsm.h"

+  #include "dcmtk/ofstd/ofbmanip.h"

+ @@ -122,6 +122,7 @@ END_EXTERN_C

+  #include "dcmtk/dcmnet/dcmtrans.h"

+  #include "dcmtk/dcmnet/dcmlayer.h"

+  #include "dcmtk/dcmnet/diutil.h"

+ +#include "dcmtk/dcmnet/helpers.h"

+  #include "dcmtk/ofstd/ofsockad.h" /* for class OFSockAddr */

+  

+  /* At least Solaris doesn't define this */

+ @@ -310,9 +311,6 @@ findPresentationCtx(LST_HEAD ** lst, DUL_PRESENTATIONCONTEXTID contextID);

+  PRV_SCUSCPROLE *

+  findSCUSCPRole(LST_HEAD ** lst, char *abstractSyntax);

+  

+ -void destroyPresentationContextList(LST_HEAD ** l);

+ -void destroyUserInformationLists(DUL_USERINFO * userInfo);

+ -

+  static volatile FSM_Event_Description Event_Table[] = {

+      {A_ASSOCIATE_REQ_LOCAL_USER, "A-ASSOCIATE request (local user)"},

+      {TRANS_CONN_CONFIRM_LOCAL_USER, "Transport conn confirmation (local)"},

+ @@ -3988,48 +3986,3 @@ findSCUSCPRole(LST_HEAD ** lst, char *abstractSyntax)

+      }

+      return NULL;

+  }

+ -

+ -void

+ -destroyPresentationContextList(LST_HEAD ** l)

+ -{

+ -    PRV_PRESENTATIONCONTEXTITEM

+ -    * prvCtx;

+ -    DUL_SUBITEM

+ -        * subItem;

+ -

+ -    if (*l == NULL)

+ -        return;

+ -

+ -    prvCtx = (PRV_PRESENTATIONCONTEXTITEM*)LST_Dequeue(l);

+ -    while (prvCtx != NULL) {

+ -        subItem = (DUL_SUBITEM*)LST_Dequeue(&prvCtx->transferSyntaxList);

+ -        while (subItem != NULL) {

+ -            free(subItem);

+ -            subItem = (DUL_SUBITEM*)LST_Dequeue(&prvCtx->transferSyntaxList);

+ -        }

+ -        LST_Destroy(&prvCtx->transferSyntaxList);

+ -        free(prvCtx);

+ -        prvCtx = (PRV_PRESENTATIONCONTEXTITEM*)LST_Dequeue(l);

+ -    }

+ -    LST_Destroy(l);

+ -}

+ -

+ -void

+ -destroyUserInformationLists(DUL_USERINFO * userInfo)

+ -{

+ -    PRV_SCUSCPROLE

+ -    * role;

+ -

+ -    role = (PRV_SCUSCPROLE*)LST_Dequeue(&userInfo->SCUSCPRoleList);

+ -    while (role != NULL) {

+ -        free(role);

+ -        role = (PRV_SCUSCPROLE*)LST_Dequeue(&userInfo->SCUSCPRoleList);

+ -    }

+ -    LST_Destroy(&userInfo->SCUSCPRoleList);

+ -

+ -    /* extended negotiation */

+ -    delete userInfo->extNegList; userInfo->extNegList = NULL;

+ -

+ -    /* user identity negotiation */

+ -    delete userInfo->usrIdent; userInfo->usrIdent = NULL;

+ -}

+ diff --git a/dcmnet/libsrc/dulparse.cc b/dcmnet/libsrc/dulparse.cc

+ index 0a84f3850..decd60dc5 100644

+ --- a/dcmnet/libsrc/dulparse.cc

+ +++ b/dcmnet/libsrc/dulparse.cc

+ @@ -75,7 +75,8 @@

+  #include "dcmtk/dcmnet/lst.h"

+  #include "dcmtk/dcmnet/dul.h"

+  #include "dcmtk/dcmnet/diutil.h"

+ -#include "dulstruc.h"

+ +#include "dcmtk/dcmnet/dulstruc.h"

+ +#include "dcmtk/dcmnet/helpers.h"

+  #include "dulpriv.h"

+  #include "dcmtk/ofstd/ofconsol.h"

+  

+ @@ -147,9 +148,6 @@ parseAssociate(unsigned char *buf, unsigned long pduLength,

+          * context;

+  

+      (void) memset(assoc, 0, sizeof(*assoc));

+ -    if ((assoc->presentationContextList = LST_Create()) == NULL) return EC_MemoryExhausted;

+ -    if ((assoc->userInfo.SCUSCPRoleList = LST_Create()) == NULL) return EC_MemoryExhausted;

+ -

+      // Check if the PDU actually is long enough for the fields we read

+      if (pduLength < 2 + 2 + 16 + 16 + 32)

+          return makeLengthError("associate PDU", pduLength, 2 + 2 + 16 + 16 + 32);

+ @@ -210,6 +208,8 @@ parseAssociate(unsigned char *buf, unsigned long pduLength,

+              << "Called AP Title:  " << assoc->calledAPTitle << OFendl

+              << "Calling AP Title: " << assoc->callingAPTitle);

+      }

+ +    if ((assoc->presentationContextList = LST_Create()) == NULL) return EC_MemoryExhausted;

+ +    if ((assoc->userInfo.SCUSCPRoleList = LST_Create()) == NULL) return EC_MemoryExhausted;

+      while ((cond.good()) && (pduLength > 0))

+      {

+          type = *buf;

+ @@ -224,44 +224,80 @@ parseAssociate(unsigned char *buf, unsigned long pduLength,

+              {

+                  buf += itemLength;

+                  if (!OFStandard::safeSubtract(pduLength, itemLength, pduLength))

+ -                  return makeUnderflowError("Application Context item", pduLength, itemLength);

+ -                DCMNET_TRACE("Successfully parsed Application Context");

+ +                {

+ +                    cond = makeUnderflowError("Application Context item", pduLength, itemLength);

+ +                }

+ +                else

+ +                {

+ +                    DCMNET_TRACE("Successfully parsed Application Context");

+ +                }

+              }

+              break;

+          case DUL_TYPEPRESENTATIONCONTEXTRQ:

+          case DUL_TYPEPRESENTATIONCONTEXTAC:

+              context = (PRV_PRESENTATIONCONTEXTITEM*)malloc(sizeof(PRV_PRESENTATIONCONTEXTITEM));

+ -            if (context == NULL) return EC_MemoryExhausted;

+ -            (void) memset(context, 0, sizeof(*context));

+ -            cond = parsePresentationContext(type, context, buf, &itemLength, pduLength);

+ -            if (cond.bad()) return cond;

+ -            buf += itemLength;

+ -            if (!OFStandard::safeSubtract(pduLength, itemLength, pduLength))

+ -              return makeUnderflowError("Presentation Context item", pduLength, itemLength);

+ -            LST_Enqueue(&assoc->presentationContextList, (LST_NODE*)context);

+ -            DCMNET_TRACE("Successfully parsed Presentation Context");

+ +            if (context != NULL)

+ +            {

+ +                (void) memset(context, 0, sizeof(*context));

+ +                cond = parsePresentationContext(type, context, buf, &itemLength, pduLength);

+ +                if (cond.bad())

+ +                {

+ +                    free(context);

+ +                }

+ +                else

+ +                {

+ +                    buf += itemLength;

+ +                    if (!OFStandard::safeSubtract(pduLength, itemLength, pduLength))

+ +                    {

+ +                        cond =  makeUnderflowError("Presentation Context item", pduLength, itemLength);

+ +                    }

+ +                    else

+ +                    {

+ +                        LST_Enqueue(&assoc->presentationContextList, (LST_NODE*)context);

+ +                        DCMNET_TRACE("Successfully parsed Presentation Context");

+ +                    }

+ +                }

+ +            }

+ +            else

+ +            {

+ +                cond = EC_MemoryExhausted;

+ +            }

+              break;

+          case DUL_TYPEUSERINFO:

+              // parse user info, which can contain several sub-items like User

+              // Identity Negotiation or SOP Class Extended Negotiation

+              cond = parseUserInfo(&assoc->userInfo, buf, &itemLength, assoc->type, pduLength);

+ -            if (cond.bad())

+ -                return cond;

+ -            buf += itemLength;

+ -            if (!OFStandard::safeSubtract(pduLength, itemLength, pduLength))

+ -              return makeUnderflowError("User Information item", pduLength, itemLength);

+ -            DCMNET_TRACE("Successfully parsed User Information");

+ +            if (cond.good())

+ +            {

+ +                buf += itemLength;

+ +                if (!OFStandard::safeSubtract(pduLength, itemLength, pduLength))

+ +                {

+ +                    cond = makeUnderflowError("User Information item", pduLength, itemLength);

+ +                }

+ +                else

+ +                {

+ +                    DCMNET_TRACE("Successfully parsed User Information");

+ +                }

+ +            }

+              break;

+          default:

+              cond = parseDummy(buf, &itemLength, pduLength);

+ -            if (cond.bad())

+ -                return cond;

+ -            buf += itemLength;

+ -            if (!OFStandard::safeSubtract(pduLength, itemLength, pduLength))

+ -              return makeUnderflowError("unknown item type", pduLength, itemLength);

+ +            if (cond.good())

+ +            {

+ +                buf += itemLength;

+ +                if (!OFStandard::safeSubtract(pduLength, itemLength, pduLength))

+ +                {

+ +                    cond = makeUnderflowError("unknown item type", pduLength, itemLength);

+ +                }

+ +            }

+              break;

+          }

+      }

+ +    if (cond.bad())

+ +    {

+ +      destroyPresentationContextList(&assoc->presentationContextList);

+ +      destroyUserInformationLists(&assoc->userInfo);

+ +    }

+      return cond;

+  }

+  

+ @@ -409,7 +445,11 @@ parsePresentationContext(unsigned char type,

+                  subItem = (DUL_SUBITEM*)malloc(sizeof(DUL_SUBITEM));

+                  if (subItem == NULL) return EC_MemoryExhausted;

+                  cond = parseSubItem(subItem, buf, &length, presentationLength);

+ -                if (cond.bad()) return cond;

+ +                if (cond.bad())

+ +                {

+ +                    free(subItem);

+ +                    return cond;

+ +                }

+                  LST_Enqueue(&context->transferSyntaxList, (LST_NODE*)subItem);

+                  buf += length;

+                  if (!OFStandard::safeSubtract(presentationLength, length, presentationLength))

+ @@ -530,7 +570,11 @@ parseUserInfo(DUL_USERINFO * userInfo,

+              role = (PRV_SCUSCPROLE*)malloc(sizeof(PRV_SCUSCPROLE));

+              if (role == NULL) return EC_MemoryExhausted;

+              cond = parseSCUSCPRole(role, buf, &length, userLength);

+ -            if (cond.bad()) return cond;

+ +            if (cond.bad())

+ +            {

+ +                free(role);

+ +                return cond;

+ +            }

+              LST_Enqueue(&userInfo->SCUSCPRoleList, (LST_NODE*)role);

+              buf += length;

+              if (!OFStandard::safeSubtract(userLength, OFstatic_cast(short unsigned int, length), userLength))

+ diff --git a/dcmnet/libsrc/dulpres.cc b/dcmnet/libsrc/dulpres.cc

+ index a0b8d618c..77be86c24 100644

+ --- a/dcmnet/libsrc/dulpres.cc

+ +++ b/dcmnet/libsrc/dulpres.cc

+ @@ -74,7 +74,7 @@

+  #include "dcmtk/dcmnet/cond.h"

+  #include "dcmtk/dcmnet/lst.h"

+  #include "dcmtk/dcmnet/dul.h"

+ -#include "dulstruc.h"

+ +#include "dcmtk/dcmnet/dulstruc.h"

+  #include "dulpriv.h"

+  #include "dulfsm.h"

+  

+ diff --git a/dcmnet/libsrc/helpers.cc b/dcmnet/libsrc/helpers.cc

+ new file mode 100644

+ index 000000000..9cd20cefc

+ --- /dev/null

+ +++ b/dcmnet/libsrc/helpers.cc

+ @@ -0,0 +1,71 @@

+ +/*

+ + *

+ + *  Copyright (C) 2021, OFFIS e.V.

+ + *  All rights reserved.  See COPYRIGHT file for details.

+ + *

+ + *  This software and supporting documentation were partly developed by

+ + *

+ + *    OFFIS e.V.

+ + *    R&D Division Health

+ + *    Escherweg 2

+ + *    D-26121 Oldenburg, Germany

+ + *

+ + *

+ + *  Module: dcmnet

+ + *

+ + *  Author: Michael Onken

+ + *

+ + *  Purpose: Collection of helper functions

+ + *

+ + */

+ +

+ +#include "dcmtk/dcmnet/helpers.h"

+ +#include "dcmtk/dcmnet/lst.h"

+ +#include "dcmtk/dcmnet/assoc.h"

+ +#include "dcmtk/dcmnet/dulstruc.h"

+ +

+ +

+ +void

+ +destroyPresentationContextList(LST_HEAD ** l)

+ +{

+ +    PRV_PRESENTATIONCONTEXTITEM

+ +    * prvCtx;

+ +    DUL_SUBITEM

+ +        * subItem;

+ +

+ +    if (*l == NULL)

+ +        return;

+ +

+ +    prvCtx = (PRV_PRESENTATIONCONTEXTITEM*)LST_Dequeue(l);

+ +    while (prvCtx != NULL) {

+ +        subItem = (DUL_SUBITEM*)LST_Dequeue(&prvCtx->transferSyntaxList);

+ +        while (subItem != NULL) {

+ +            free(subItem);

+ +            subItem = (DUL_SUBITEM*)LST_Dequeue(&prvCtx->transferSyntaxList);

+ +        }

+ +        LST_Destroy(&prvCtx->transferSyntaxList);

+ +        free(prvCtx);

+ +        prvCtx = (PRV_PRESENTATIONCONTEXTITEM*)LST_Dequeue(l);

+ +    }

+ +    LST_Destroy(l);

+ +}

+ +

+ +void

+ +destroyUserInformationLists(DUL_USERINFO * userInfo)

+ +{

+ +    PRV_SCUSCPROLE

+ +    * role;

+ +

+ +    role = (PRV_SCUSCPROLE*)LST_Dequeue(&userInfo->SCUSCPRoleList);

+ +    while (role != NULL) {

+ +        free(role);

+ +        role = (PRV_SCUSCPROLE*)LST_Dequeue(&userInfo->SCUSCPRoleList);

+ +    }

+ +    LST_Destroy(&userInfo->SCUSCPRoleList);

+ +

+ +    /* extended negotiation */

+ +    delete userInfo->extNegList; userInfo->extNegList = NULL;

+ +

+ +    /* user identity negotiation */

+ +    delete userInfo->usrIdent; userInfo->usrIdent = NULL;

+ +}

+ -- 

+ 2.39.2

+ 

@@ -0,0 +1,30 @@ 

+ From 0e507235266dab0f9046a94231c3eb09fc27ceca Mon Sep 17 00:00:00 2001

+ From: Michael Onken <onken@open-connections.de>

+ Date: Wed, 15 Sep 2021 09:04:12 +0200

+ Subject: [PATCH 20/22] [CVE-2021-41689] Fixed possible NULL pointer

+  dereference.

+ 

+ Thanks to Jinsheng Ba <bajinsheng@u.nus.edu> for the report and patch.

+ 

+ (cherry picked from commit 5c14bf53fb42ceca12bbcc0016e8704b1580920d)

+ ---

+  dcmnet/libsrc/diutil.cc | 3 ++-

+  1 file changed, 2 insertions(+), 1 deletion(-)

+ 

+ diff --git a/dcmnet/libsrc/diutil.cc b/dcmnet/libsrc/diutil.cc

+ index 856143d8c..fc446dd43 100644

+ --- a/dcmnet/libsrc/diutil.cc

+ +++ b/dcmnet/libsrc/diutil.cc

+ @@ -177,7 +177,8 @@ DU_getStringDOElement(DcmItem *obj, DcmTagKey t, char *s, size_t bufsize)

+              s[0] = '\0';

+          } else {

+              ec =  elem->getString(aString);

+ -            OFStandard::strlcpy(s, aString, bufsize);

+ +            if (ec == EC_Normal)

+ +                OFStandard::strlcpy(s, aString, bufsize);

+          }

+      }

+      return (ec == EC_Normal);

+ -- 

+ 2.39.2

+ 

@@ -0,0 +1,53 @@ 

+ From 6aca095491009d88c4e2ea6be153ed1c5ee8e9c3 Mon Sep 17 00:00:00 2001

+ From: Marco Eichelberg <dicom@offis.de>

+ Date: Wed, 30 Mar 2022 18:46:02 +0200

+ Subject: [PATCH 21/22] [CVE-2022-2119, CVE-2022-2120, CVE-2022-2121] Fixed

+  possible NULL pointer dereference.

+ 

+ Fixed a possible NULL pointer dereference that could occur when reading an

+ invalid DICOM file from stdin. Loading a file from the file system

+ and receiving data over a network connection were not affected by this bug.

+ 

+ Thanks to Sharon Brizinov and Noam Moshe from Claroty Research for the

+ bug report and sample file.

+ 

+ (cherry picked from commit 3e996a2749a9355c9b680fa464ecfd9ab9ff567f)

+ ---

+  dcmdata/libsrc/dcfilefo.cc | 3 +++

+  dcmdata/libsrc/dcitem.cc   | 6 +++++-

+  2 files changed, 8 insertions(+), 1 deletion(-)

+ 

+ diff --git a/dcmdata/libsrc/dcfilefo.cc b/dcmdata/libsrc/dcfilefo.cc

+ index 4b6b64899..ede677efd 100644

+ --- a/dcmdata/libsrc/dcfilefo.cc

+ +++ b/dcmdata/libsrc/dcfilefo.cc

+ @@ -736,6 +736,9 @@ OFCondition DcmFileFormat::readUntilTag(DcmInputStream &inStream,

+                  errorFlag = metaInfo->read(inStream, EXS_Unknown, glenc, maxReadLength);

+              }

+  

+ +            // bail out if the meta-header is still incomplete or an error occured

+ +            if (errorFlag.bad()) return errorFlag;

+ +

+              // determine xfer from tag (0002,0010) in the meta header

+              newxfer = lookForXfer(metaInfo);

+              if ((FileReadMode == ERM_fileOnly) || (FileReadMode == ERM_metaOnly))

+ diff --git a/dcmdata/libsrc/dcitem.cc b/dcmdata/libsrc/dcitem.cc

+ index 045f3c93f..a866b9845 100644

+ --- a/dcmdata/libsrc/dcitem.cc

+ +++ b/dcmdata/libsrc/dcitem.cc

+ @@ -1463,7 +1463,11 @@ OFCondition DcmItem::readUntilTag(DcmInputStream & inStream,

+                  /* tag and length (and possibly VR) information as well as maybe some data */

+                  /* data value information. We need to continue reading the data value */

+                  /* information for this particular element. */

+ -                errorFlag = elementList->get()->read(inStream, xfer, glenc, maxReadLength);

+ +                DcmObject *dO = elementList->get();

+ +                if (dO)

+ +                  errorFlag = dO->read(inStream, xfer, glenc, maxReadLength);

+ +                  else errorFlag = EC_InternalError; // should never happen

+ +

+                  /* if reading was successful, we read the entire information */

+                  /* for this element; hence lastElementComplete is true */

+                  if (errorFlag.good())

+ -- 

+ 2.39.2

+ 

@@ -0,0 +1,53 @@ 

+ From 17ae64c748e821c5aa0cf62689ce77afa741e721 Mon Sep 17 00:00:00 2001

+ From: Marco Eichelberg <dicom@offis.de>

+ Date: Thu, 9 Jun 2022 10:03:38 +0200

+ Subject: [PATCH 22/22] [CVE-2022-43272] Fixed memory leak in single process

+  mode.

+ 

+ Fixed a memory leak in dcmqrscp's single process mode.

+ 

+ Thanks to <songxiangpu@mail.sdu.edu.cn> for the bug report and test data.

+ 

+ (cherry picked from commit c34f4e46e672ad21accf04da0dc085e43be6f5e1)

+ ---

+  dcmqrdb/libsrc/dcmqrsrv.cc | 22 +++++++++-------------

+  1 file changed, 9 insertions(+), 13 deletions(-)

+ 

+ diff --git a/dcmqrdb/libsrc/dcmqrsrv.cc b/dcmqrdb/libsrc/dcmqrsrv.cc

+ index 7f01409c5..1702fa460 100644

+ --- a/dcmqrdb/libsrc/dcmqrsrv.cc

+ +++ b/dcmqrdb/libsrc/dcmqrsrv.cc

+ @@ -1112,21 +1112,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

+ 

file modified
+73 -26
@@ -8,6 +8,8 @@ 

  

  %global abi_version 16

  

+ %bcond_with charls2

+ 

  Name: dcmtk

  Summary: Offis DICOM Toolkit (DCMTK)

  Version: 3.6.6
@@ -16,31 +18,47 @@ 

  # https://github.com/DCMTK/dcmtk/blob/master/CMake/dcmtkPrepare.cmake#L78

  %global soname_version %{abi_version}.%{version}

  

- Release: 7%{?dist}

+ Release: 12%{?dist}

  License: BSD

- Source0: https://dicom.offis.de/download/dcmtk/dcmtk366/dcmtk-3.6.6.tar.gz

+ Source: https://dicom.offis.de/download/dcmtk/dcmtk366/dcmtk-3.6.6.tar.gz

  URL: http://dicom.offis.de/dcmtk.php.en

  

- Patch0:     0001-3.6.4-Use-system-CharLS-include.patch

- Patch1:     0002-3.6.4-Add-FindCharLS.patch

- Patch2:     0003-3.6.6-Find-and-include-CharLS.patch

- Patch3:     0004-3.6.6-Use-cmake-suggested-locations-for-CharLS.patch

- Patch4:     0005-3.6.4-Correct-CharLS-API-call.patch

- Patch5:     0006-3.6.4-Remove-reference-to-bundled-CharLS.patch

- Patch6:     0007-3.6.4-Update-JLS_ERROR-to-jpegls_error-in-CharLS-usa.patch

- Patch7:     0008-3.6.4-correct-JpegLsReadHeader-arguments.patch

- Patch8:     0009-3.6.6-update-JlsParameters-for-new-CharLS.patch

- Patch9:     0010-3.6.4-correct-JpegLsDecode-arguments-for-CharLS-2.patch

- Patch10:    0011-3.6.6-update-ilv-for-new-CharLS.patch

- Patch11:    0012-3.6.4-Correct-extra-include-for-CharLS.patch

- Patch12:    0013-3.6.4-Update-errors-to-use-enum-class-in-CharLS-2.patch

- Patch13:    0014-3.6.4-define-BYTE-for-CharLS.patch

- Patch14:    0015-3.6.6-Update-colorTransformation-for-CharLS-2.patch

- Patch15:    0016-3.6.4-Update-JpegLsEncode-for-CharLS-2.patch

+ # Downstream fixes

+ # Use bundled charls version and wait until upstream ports to new charls version

+ # charls version 2 includes a regression: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=923433

+ %if %{with charls2}

+ # not merged upstream yet: https://github.com/DCMTK/dcmtk/pull/18

+ 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

  # https://forum.dcmtk.org/viewtopic.php?t=5084

- Patch16:    0017-3.6.6-Increased-sleep-fraction-for-dcmtls_scp_pool_tls-test.patch

+ Patch:      0017-Increase-sleep-for-tests.patch

  # Fix for endianess systems https://forum.dcmtk.org/viewtopic.php?f=3&t=5116

- Patch17:    0018-3.6.6-Fix-for-Big-Endian-systems.patch

+ Patch:      0018-Fix-for-big-endian-systems.patch

+ 

+ # Upstream fixes

+ # https://github.com/DCMTK/dcmtk/commit/a9697dfeb672b0b9412c00c7d36d801e27ec85cb

+ Patch:      0019-CVE-2021-41687-CVE-2021-41688-CVE-2021-41690-Fixed-poss.-NULL-pointer-dereference-double-free.patch

+ # https://github.com/DCMTK/dcmtk/commit/5c14bf53fb42ceca12bbcc0016e8704b1580920d

+ Patch:      0020-CVE-2021-41689-Fixed-possible-NULL-pointer-dereference.patch

+ # https://github.com/DCMTK/dcmtk/commit/3e996a2749a9355c9b680fa464ecfd9ab9ff567f

+ Patch:      0021-CVE-2022-2119-CVE-2022-2120-CVE-2022-2121-Fixed-possible-NULL-pointer-dereference.patch

+ # https://github.com/DCMTK/dcmtk/commit/c34f4e46e672ad21accf04da0dc085e43be6f5e1

+ Patch:      0022-CVE-2022-43272-Fixed-memory-leak-in-single-process-mode.patch

  

  BuildRequires: gcc

  BuildRequires: gcc-c++
@@ -52,7 +70,9 @@ 

  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
@@ -70,7 +90,9 @@ 

  %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}

  
@@ -81,16 +103,18 @@ 

  %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"

- export CXXFLAGS="%{optflags} -fPIC"

+ 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} \
@@ -111,7 +135,8 @@ 

   -DDCMTK_WITH_XML:BOOL=ON \

   -DDCMTK_WITH_CHARLS:BOOL=ON \

   -DDCMTK_WITH_ZLIB:BOOL=ON \

-  -DDCMTK_ENABLE_CXX11:BOOL=ON .

+  -DDCMTK_ENABLE_CXX11:BOOL=ON \

+  -Wno-dev

  %cmake_build

  

  %install
@@ -123,10 +148,10 @@ 

  %ldconfig_scriptlets

  

  %check

- # ppc64le: remove dcmtls_scp_tls and dcmtls_scp_pool_tls that sporadically fails

- %ifarch ppc64le

+ # remove dcmtls_scp_tls and dcmtls_scp_pool_tls that sporadically fails

+ # upstream considers these tests unstable

+ # https://forum.dcmtk.org/viewtopic.php?t=5084#p20705

  rm -rf %{_vpath_builddir}/dcmtls/tests/

- %endif

  %ctest

  

  %files
@@ -167,6 +192,8 @@ 

  %{_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}
@@ -217,6 +244,7 @@ 

  %{_libdir}/libdcmrt.so

  %{_libdir}/libdcmseg.so

  %{_libdir}/libdcmsr.so

+ %{_libdir}/libdcmtkcharls.so

  %{_libdir}/libdcmtls.so

  %{_libdir}/libdcmtract.so

  %{_libdir}/libdcmwlm.so
@@ -227,6 +255,25 @@ 

  %{_libdir}/libofstd.so

  

  %changelog

+ * Thu Mar 02 2023 Carl George <carl@george.computer> - 3.6.6-12

+ - Backport fix for CVE-2021-41687/CVE-2021-41688/CVE-2021-41690, resolves rhbz#2106336/rhbz#2106315/rhbz#2106332

+ - Backport fix for CVE-2021-41689, resolves rhbz#2106340

+ - Backport fix for CVE-2022-2119/CVE-2022-2120/CVE-2022-2121, resolves rhbz#2173039/rhbz#2173042/rhbz#2173045

+ - Backport fix for CVE-2022-43272, resolves rhbz#2150931

+ - Disable dcmtls tests on all architectures

+ 

+ * Mon Apr 25 2022 Ankur Sinha <ankursinha AT fedoraproject DOT org> - 3.6.6-11

+ - Disable sporadically failing test on s390x also

+ 

+ * Mon Apr 25 2022 Ankur Sinha <ankursinha AT fedoraproject DOT org> - 3.6.6-10

+ - Use bundled charls

+ 

+ * Mon Apr 25 2022 Ankur Sinha <ankursinha AT fedoraproject DOT org> - 3.6.6-9

+ - Temporarily allow use of deprecated flags to fix build with openssl 3.0

+ 

+ * Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.6.6-8

+ - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild

+ 

  * Tue Sep 14 2021 Sahana Prasad <sahana@redhat.com> - 3.6.6-7

  - Rebuilt with OpenSSL 3.0.0

  

This PR is mainly to backport multiple CVE fixes, but has a few additional commits. First it fast fowards the commits to the last 3.6.6 commit from rawhide in order to pick up important fixes like allowing deprecated openssl declarations, using bundled charls v1, and disabling sporadically failing test on s390x. Then there is a commit to clean up exising patch files. Finally it has a commit with CVE fixes backported from upstream.

Resolves CVE-2021-41687/CVE-2021-41688/CVE-2021-41690, rhbz#2106336/rhbz#2106315/rhbz#2106332
Resolves CVE-2021-41689, rhbz#2106340
Resolves CVE-2022-2119/CVE-2022-2120/CVE-2022-2121, rhbz#2173039/rhbz#2173042/rhbz#2173045
Resolves CVE-2022-43272, rhbz#2150931

Result of the CI scratch build:

The following tests FAILED:
    152 - dcmtls_scp_tls (Failed)
    153 - dcmtls_scp_pool_tls (Failed)

I'm looking into these failures.

1 new commit added

  • Disable dcmtls tests on all architectures
6 months ago

Seems we're already skipping those tests on some architectures. I adjust it to always skip those since upstream considers them unstable.

https://forum.dcmtk.org/viewtopic.php?t=5084#p20705

Pull-Request has been merged by carlwgeorge

6 months ago
Metadata
Changes Summary 23
+5 -5
file renamed
0001-3.6.4-Use-system-CharLS-include.patch
0001-Use-system-CharLS-include.patch
+3 -3
file renamed
0002-3.6.4-Add-FindCharLS.patch
0002-Add-FindCharLS.patch
+14 -1
file renamed
0003-3.6.6-Find-and-include-CharLS.patch
0003-Find-and-include-CharLS.patch
+16 -2
file renamed
0004-3.6.6-Use-cmake-suggested-locations-for-CharLS.patch
0004-Use-cmake-suggested-locations-for-CharLS.patch
+6 -6
file renamed
0005-3.6.4-Correct-CharLS-API-call.patch
0005-Correct-CharLS-API-call.patch
+3 -3
file renamed
0006-3.6.4-Remove-reference-to-bundled-CharLS.patch
0006-Remove-reference-to-bundled-CharLS.patch
+8 -8
file renamed
0007-3.6.4-Update-JLS_ERROR-to-jpegls_error-in-CharLS-usa.patch
0007-Update-JLS_ERROR-to-jpegls_error-in-CharLS-usage.patch
+5 -5
file renamed
0008-3.6.4-correct-JpegLsReadHeader-arguments.patch
0008-Correct-JpegLsReadHeader-arguments.patch
+16 -2
file renamed
0009-3.6.6-update-JlsParameters-for-new-CharLS.patch
0009-Update-JlsParameters-for-new-CharLS.patch
+5 -5
file renamed
0010-3.6.4-correct-JpegLsDecode-arguments-for-CharLS-2.patch
0010-Correct-JpegLsDecode-arguments-for-CharLS-2.patch
+24 -10
file renamed
0011-3.6.6-update-ilv-for-new-CharLS.patch
0011-Update-ilv-for-new-CharLS.patch
+5 -5
file renamed
0012-3.6.4-Correct-extra-include-for-CharLS.patch
0012-Correct-extra-include-for-CharLS.patch
+3 -3
file renamed
0013-3.6.4-Update-errors-to-use-enum-class-in-CharLS-2.patch
0013-Update-errors-to-use-enum-class-in-CharLS-2.patch
+4 -4
file renamed
0014-3.6.4-define-BYTE-for-CharLS.patch
0014-Define-BYTE-for-CharLS.patch
+14 -1
file renamed
0015-3.6.6-Update-colorTransformation-for-CharLS-2.patch
0015-Update-colorTransformation-for-CharLS-2.patch
+6 -6
file renamed
0016-3.6.4-Update-JpegLsEncode-for-CharLS-2.patch
0016-Update-JpegLsEncode-for-CharLS-2.patch
+15 -2
file renamed
0017-3.6.6-Increased-sleep-fraction-for-dcmtls_scp_pool_tls-test.patch
0017-Increase-sleep-for-tests.patch
+31 -27
file renamed
0018-3.6.6-Fix-for-Big-Endian-systems.patch
0018-Fix-for-big-endian-systems.patch
+568
file added
0019-CVE-2021-41687-CVE-2021-41688-CVE-2021-41690-Fixed-poss.-NULL-pointer-dereference-double-free.patch
+30
file added
0020-CVE-2021-41689-Fixed-possible-NULL-pointer-dereference.patch
+53
file added
0021-CVE-2022-2119-CVE-2022-2120-CVE-2022-2121-Fixed-possible-NULL-pointer-dereference.patch
+53
file added
0022-CVE-2022-43272-Fixed-memory-leak-in-single-process-mode.patch
+73 -26
file changed
dcmtk.spec