Compare commits

...

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

@ -1 +1 @@
a4b5bdd5130a15226755466e8c667cff91672b32 SOURCES/dcmtk-3.6.7.tar.gz 2e370b1d11ad840d34f151ea9fd51b7fd03fb5f2 SOURCES/dcmtk-3.6.6.tar.gz

2
.gitignore vendored

@ -1 +1 @@
SOURCES/dcmtk-3.6.7.tar.gz SOURCES/dcmtk-3.6.6.tar.gz

@ -1,7 +1,7 @@
From ee3d49874fd861472bbffedf09b186fc6d8ce83d Mon Sep 17 00:00:00 2001 From 6f8d21d803c5e5d2fab5cbff97b2d40793fa5701 Mon Sep 17 00:00:00 2001
From: "Ankur Sinha (Ankur Sinha Gmail)" <sanjay.ankur@gmail.com> From: Alessio <alciregi@fedoraproject.org>
Date: Tue, 2 Aug 2022 20:50:43 +0100 Date: Thu, 2 Mar 2023 00:04:18 -0600
Subject: [PATCH 17/18] Increase sleep for tests Subject: [PATCH 17/22] Increase sleep for tests
--- ---
dcmnet/tests/tscusession.cc | 6 +++--- dcmnet/tests/tscusession.cc | 6 +++---
@ -9,7 +9,7 @@ Subject: [PATCH 17/18] Increase sleep for tests
2 files changed, 6 insertions(+), 6 deletions(-) 2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/dcmnet/tests/tscusession.cc b/dcmnet/tests/tscusession.cc diff --git a/dcmnet/tests/tscusession.cc b/dcmnet/tests/tscusession.cc
index 08a24dbbf..4d3020208 100644 index 7ae4ff53a..3508b6da8 100644
--- a/dcmnet/tests/tscusession.cc --- a/dcmnet/tests/tscusession.cc
+++ b/dcmnet/tests/tscusession.cc +++ b/dcmnet/tests/tscusession.cc
@@ -280,7 +280,7 @@ void configure_scp_for_sop_class(DcmSCPConfig& cfg, @@ -280,7 +280,7 @@ void configure_scp_for_sop_class(DcmSCPConfig& cfg,
@ -38,28 +38,28 @@ index 08a24dbbf..4d3020208 100644
// TODO: Test C-GET // TODO: Test C-GET
diff --git a/dcmtls/tests/tscuscptls.cc b/dcmtls/tests/tscuscptls.cc diff --git a/dcmtls/tests/tscuscptls.cc b/dcmtls/tests/tscuscptls.cc
index d895da7af..ed8f35883 100644 index ef0cb2232..f054e8b18 100644
--- a/dcmtls/tests/tscuscptls.cc --- a/dcmtls/tests/tscuscptls.cc
+++ b/dcmtls/tests/tscuscptls.cc +++ b/dcmtls/tests/tscuscptls.cc
@@ -347,7 +347,7 @@ OFTEST_FLAGS(dcmtls_scp_tls, EF_None) @@ -318,7 +318,7 @@ OFTEST_FLAGS(dcmtls_scp_tls, EF_None)
port_number = 0xF000 + (rnd.getRND16() & 0xFFF); scp.start();
config.setPort(port_number);
scp.start(); // Ensure server is up and listening
- force_sleep(2); // wait 2 seconds for the SCP process to start - force_sleep(1);
+ force_sleep(10); // wait 10 seconds for the SCP process to start + force_sleep(10);
memory_barrier.lock();
memory_barrier.unlock(); // Configure SCU and run it against SCP
} DcmTLSSCU scu;
@@ -429,7 +429,7 @@ OFTEST_FLAGS(dcmtls_scp_pool_tls, EF_None) @@ -386,7 +386,7 @@ OFTEST_FLAGS(dcmtls_scp_pool_tls, EF_None)
port_number = 0xF000 + (rnd.getRND16() & 0xFFF); pool.start();
config.setPort(port_number);
pool.start(); // Ensure server is up and listening
- force_sleep(2); // wait 2 seconds for the SCP process to start - force_sleep(1);
+ force_sleep(10); // wait 10 seconds for the SCP process to start + force_sleep(10);
memory_barrier.lock();
memory_barrier.unlock(); OFVector<TestTLSSCU*> scus(20);
} OFVector<DcmTLSTransportLayer*> scuTlsLayers;
@@ -460,7 +460,7 @@ OFTEST_FLAGS(dcmtls_scp_pool_tls, EF_None) @@ -412,7 +412,7 @@ OFTEST_FLAGS(dcmtls_scp_pool_tls, EF_None)
// "ensure" the pool is initialized before any SCU starts connecting to it. The initialization // "ensure" the pool is initialized before any SCU starts connecting to it. The initialization
// can take a couple of seconds on older systems, e.g. debian i368. // can take a couple of seconds on older systems, e.g. debian i368.

@ -0,0 +1,116 @@
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 3cdeb907a..26839bdcc 100644
--- a/dcmect/tests/t_roundtrip.cc
+++ b/dcmect/tests/t_roundtrip.cc
@@ -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 +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);
- OFCHECK(exp_item->setEstimatedDoseSaving(0.2).good());
OFCHECK(exp_item->setExposureInMas(0.3).good());
OFCHECK(exp_item->setExposureModulationType("WEIRD").good());
OFCHECK(exp_item->setExposureTimeInMs(0.4).good());
@@ -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";
- EXPECTED_DUMP += "# Used TransferSyntax: Little Endian Explicit\n";
+ // DcmDataset.print() produces dumps in local endianess, so make sure the dump reflects the current machine
+ if (gLocalByteOrder == EBO_LittleEndian)
+ EXPECTED_DUMP += "# Used TransferSyntax: Little Endian Explicit\n";
+ else
+ EXPECTED_DUMP += "# Used TransferSyntax: Big Endian Explicit\n";
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 +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";
- EXPECTED_DUMP += " (fffe,e000) na (Item with explicit length #=10) # 0, 1 Item\n";
+ EXPECTED_DUMP += " (fffe,e000) na (Item with explicit length #=9) # 0, 1 Item\n";
EXPECTED_DUMP += " (0018,115e) DS [0.5] # 4, 1 "
"ImageAndFluoroscopyAreaDoseProduct\n";
EXPECTED_DUMP
@@ -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";
- EXPECTED_DUMP += " (0018,9324) FD 0.2 # 8, 1 EstimatedDoseSaving\n";
EXPECTED_DUMP += " (0018,9328) FD 0.4 # 8, 1 ExposureTimeInms\n";
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 472eaf1ef..8a605ab68 100644
--- a/dcmseg/tests/troundtrip.cc
+++ b/dcmseg/tests/troundtrip.cc
@@ -31,6 +31,7 @@
#include "dcmtk/dcmfg/fgplanpo.h"
#include "dcmtk/dcmfg/fgseg.h"
#include "dcmtk/dcmiod/iodmacro.h"
+#include "dcmtk/dcmdata/dcxfer.h"
#include "dcmtk/ofstd/ofmem.h"
#include "dcmtk/ofstd/ofstrutl.h"
#include "dcmtk/ofstd/oftempf.h"
@@ -285,6 +286,7 @@ static void checkConcatenationInstance(size_t numInstance, DcmSegmentation* srcI
{
DcmSegmentation* concat = NULL;
OFCHECK(DcmSegmentation::loadDataset(*concatInstance, concat).good());
+ if (concat == NULL) return; // loadDataset() failed, we cannot continue
size_t numFrames;
numFrames = concat->getNumberOfFrames();
OFCHECK(numFrames == 1);
@@ -327,7 +329,7 @@ static void checkConcatenationInstance(size_t numInstance, DcmSegmentation* srcI
&& (cShared == concat->getFunctionalGroups().getShared()->end()));
DcmSequenceOfItems* cPerFrame = NULL;
OFCHECK(concatInstance->findAndGetSequence(DCM_PerFrameFunctionalGroupsSequence, cPerFrame).good());
- OFCHECK(cPerFrame->card() == 1);
+ OFCHECK(cPerFrame && (cPerFrame->card() == 1));
OFBool perFrame = OFFalse;
FGBase* fg = concat->getFunctionalGroups().get(0, DcmFGTypes::EFG_FRAMECONTENT, perFrame);
@@ -406,7 +408,11 @@ static void prepareExpectedDump()
{
EXPECTED_DUMP = "\n";
EXPECTED_DUMP += "# Dicom-Data-Set\n";
- EXPECTED_DUMP += "# Used TransferSyntax: Little Endian Explicit\n";
+ // DcmDataset.print() produces dumps in local endianess, so make sure the dump reflects the current machine
+ if (gLocalByteOrder == EBO_LittleEndian)
+ EXPECTED_DUMP += "# Used TransferSyntax: Little Endian Explicit\n";
+ else
+ EXPECTED_DUMP += "# Used TransferSyntax: Big Endian Explicit\n";
EXPECTED_DUMP += "(0008,0008) CS [DERIVED\\PRIMARY] # 16, 2 ImageType\n";
EXPECTED_DUMP += "(0008,0016) UI =SegmentationStorage # 28, 1 SOPClassUID\n";
EXPECTED_DUMP
--
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

@ -1,7 +1,7 @@
From cd73ffc250bf6472afdd17170eb688243701f860 Mon Sep 17 00:00:00 2001 From 17ae64c748e821c5aa0cf62689ce77afa741e721 Mon Sep 17 00:00:00 2001
From: Marco Eichelberg <dicom@offis.de> From: Marco Eichelberg <dicom@offis.de>
Date: Thu, 9 Jun 2022 10:03:38 +0200 Date: Thu, 9 Jun 2022 10:03:38 +0200
Subject: [PATCH 18/18] [CVE-2022-43272] Fixed memory leak in single process Subject: [PATCH 22/22] [CVE-2022-43272] Fixed memory leak in single process
mode. mode.
Fixed a memory leak in dcmqrscp's single process mode. Fixed a memory leak in dcmqrscp's single process mode.
@ -10,22 +10,14 @@ Thanks to <songxiangpu@mail.sdu.edu.cn> for the bug report and test data.
(cherry picked from commit c34f4e46e672ad21accf04da0dc085e43be6f5e1) (cherry picked from commit c34f4e46e672ad21accf04da0dc085e43be6f5e1)
--- ---
dcmqrdb/libsrc/dcmqrsrv.cc | 24 ++++++++++-------------- dcmqrdb/libsrc/dcmqrsrv.cc | 22 +++++++++-------------
1 file changed, 10 insertions(+), 14 deletions(-) 1 file changed, 9 insertions(+), 13 deletions(-)
diff --git a/dcmqrdb/libsrc/dcmqrsrv.cc b/dcmqrdb/libsrc/dcmqrsrv.cc diff --git a/dcmqrdb/libsrc/dcmqrsrv.cc b/dcmqrdb/libsrc/dcmqrsrv.cc
index 157e6c022..f5f9df661 100644 index 7f01409c5..1702fa460 100644
--- a/dcmqrdb/libsrc/dcmqrsrv.cc --- a/dcmqrdb/libsrc/dcmqrsrv.cc
+++ b/dcmqrdb/libsrc/dcmqrsrv.cc +++ b/dcmqrdb/libsrc/dcmqrsrv.cc
@@ -1,6 +1,6 @@ @@ -1112,21 +1112,17 @@ OFCondition DcmQueryRetrieveSCP::waitForAssociation(T_ASC_Network * theNet)
/*
*
- * Copyright (C) 1993-2021, OFFIS e.V.
+ * Copyright (C) 1993-2022, OFFIS e.V.
* All rights reserved. See COPYRIGHT file for details.
*
* This software and supporting documentation were developed by
@@ -1126,21 +1126,17 @@ OFCondition DcmQueryRetrieveSCP::waitForAssociation(T_ASC_Network * theNet)
#endif #endif
} }

@ -6,22 +6,21 @@
# Odd number releases are dev snapshots, so we will stick to even number # Odd number releases are dev snapshots, so we will stick to even number
# (official releases) only. # (official releases) only.
%global abi_version 17 %global abi_version 16
%bcond_with charls2 %bcond_with charls2
Name: dcmtk Name: dcmtk
Summary: Offis DICOM Toolkit (DCMTK) Summary: Offis DICOM Toolkit (DCMTK)
Version: 3.6.7 Version: 3.6.6
# soname version is "abi_version.version" # soname version is "abi_version.version"
# https://github.com/DCMTK/dcmtk/blob/master/CMake/dcmtkPrepare.cmake#L78 # https://github.com/DCMTK/dcmtk/blob/master/CMake/dcmtkPrepare.cmake#L78
%global soname_version %{abi_version}.%{version} %global soname_version %{abi_version}.%{version}
Release: 8%{?dist} Release: 12%{?dist}
# Automatically converted from old format: BSD - review is highly recommended. License: BSD
License: LicenseRef-Callaway-BSD Source: https://dicom.offis.de/download/dcmtk/dcmtk366/dcmtk-3.6.6.tar.gz
Source: https://dicom.offis.de/download/dcmtk/dcmtk367/dcmtk-3.6.7.tar.gz
URL: http://dicom.offis.de/dcmtk.php.en URL: http://dicom.offis.de/dcmtk.php.en
# Downstream fixes # Downstream fixes
@ -46,13 +45,20 @@ Patch: 0014-Define-BYTE-for-CharLS.patch
Patch: 0015-Update-colorTransformation-for-CharLS-2.patch Patch: 0015-Update-colorTransformation-for-CharLS-2.patch
Patch: 0016-Update-JpegLsEncode-for-CharLS-2.patch Patch: 0016-Update-JpegLsEncode-for-CharLS-2.patch
%endif %endif
# https://github.com/sanjayankur31/dcmtk/tree/fedora-3.6.7
# https://forum.dcmtk.org/viewtopic.php?t=5084 # https://forum.dcmtk.org/viewtopic.php?t=5084
Patch: 0017-Increase-sleep-for-tests.patch Patch: 0017-Increase-sleep-for-tests.patch
# Fix for endianess systems https://forum.dcmtk.org/viewtopic.php?f=3&t=5116
Patch: 0018-Fix-for-big-endian-systems.patch
# Upstream fixes # 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 # https://github.com/DCMTK/dcmtk/commit/c34f4e46e672ad21accf04da0dc085e43be6f5e1
Patch: 0018-CVE-2022-43272-Fixed-memory-leak-in-single-process-mode.patch Patch: 0022-CVE-2022-43272-Fixed-memory-leak-in-single-process-mode.patch
BuildRequires: gcc BuildRequires: gcc
BuildRequires: gcc-c++ BuildRequires: gcc-c++
@ -142,10 +148,10 @@ rm -f $RPM_BUILD_ROOT%{_datadir}/%{name}/wlistdb/OFFIS/lockfile
%ldconfig_scriptlets %ldconfig_scriptlets
%check %check
# ppc64le, s390x: remove dcmtls_scp_tls and dcmtls_scp_pool_tls that sporadically fails # remove dcmtls_scp_tls and dcmtls_scp_pool_tls that sporadically fails
%ifarch ppc64le s390x # upstream considers these tests unstable
# https://forum.dcmtk.org/viewtopic.php?t=5084#p20705
rm -rf %{_vpath_builddir}/dcmtls/tests/ rm -rf %{_vpath_builddir}/dcmtls/tests/
%endif
%ctest %ctest
%files %files
@ -196,10 +202,11 @@ rm -rf %{_vpath_builddir}/dcmtls/tests/
%{_libdir}/libdcmwlm.so.%{soname_version} %{_libdir}/libdcmwlm.so.%{soname_version}
%{_libdir}/libi2d.so.%{abi_version} %{_libdir}/libi2d.so.%{abi_version}
%{_libdir}/libi2d.so.%{soname_version} %{_libdir}/libi2d.so.%{soname_version}
%{_libdir}/libijg16.so.%{abi_version}
%{_libdir}/libijg16.so.%{soname_version}
%{_libdir}/libijg12.so.%{abi_version} %{_libdir}/libijg12.so.%{abi_version}
%{_libdir}/libijg12.so.%{soname_version} %{_libdir}/libijg12.so.%{soname_version}
%{_libdir}/libijg%{abi_version}.so
%{_libdir}/libijg%{abi_version}.so.%{abi_version}
%{_libdir}/libijg%{abi_version}.so.%{soname_version}
%{_libdir}/libijg8.so.%{abi_version} %{_libdir}/libijg8.so.%{abi_version}
%{_libdir}/libijg8.so.%{soname_version} %{_libdir}/libijg8.so.%{soname_version}
%{_libdir}/liboflog.so.%{abi_version} %{_libdir}/liboflog.so.%{abi_version}
@ -219,7 +226,6 @@ rm -rf %{_vpath_builddir}/dcmtls/tests/
%files devel %files devel
%{_includedir}/%{name}/ %{_includedir}/%{name}/
%{_libdir}/pkgconfig/%{name}.pc
%{_libdir}/cmake/%{name}/ %{_libdir}/cmake/%{name}/
%{_libdir}/libcmr.so %{_libdir}/libcmr.so
%{_libdir}/libdcmdata.so %{_libdir}/libdcmdata.so
@ -243,42 +249,21 @@ rm -rf %{_vpath_builddir}/dcmtls/tests/
%{_libdir}/libdcmtract.so %{_libdir}/libdcmtract.so
%{_libdir}/libdcmwlm.so %{_libdir}/libdcmwlm.so
%{_libdir}/libi2d.so %{_libdir}/libi2d.so
%{_libdir}/libijg16.so
%{_libdir}/libijg12.so %{_libdir}/libijg12.so
%{_libdir}/libijg8.so %{_libdir}/libijg8.so
%{_libdir}/liboflog.so %{_libdir}/liboflog.so
%{_libdir}/libofstd.so %{_libdir}/libofstd.so
%changelog %changelog
* Wed Dec 25 2024 Dmitriy Samoylik <samoylikdv@msvsphere-os.ru> - 3.6.7-8 * Sat Apr 27 2024 Arkady L. Shane <tigro@msvsphere-os.ru> - 3.6.6-12
- Rebuilt for MSVSphere 10 - Rebuilt for MSVSphere 9.3
* Wed Aug 28 2024 Miroslav Suchý <msuchy@redhat.com> - 3.6.7-8 * Thu Mar 02 2023 Carl George <carl@george.computer> - 3.6.6-12
- convert license to SPDX - 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
* Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.6.7-7 - Backport fix for CVE-2022-2119/CVE-2022-2120/CVE-2022-2121, resolves rhbz#2173039/rhbz#2173042/rhbz#2173045
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - Backport fix for CVE-2022-43272, resolves rhbz#2150931
- Disable dcmtls tests on all architectures
* Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.6.7-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.6.7-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.6.7-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Thu Mar 02 2023 Carl George <carl@george.computer> - 3.6.7-3
- Backport fix for CVE-2022-43272, resolves rhbz#2150930
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.6.7-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Tue Aug 02 2022 Ankur Sinha <ankursinha AT fedoraproject DOT org> - 3.6.7-1
- Update to 3.6.7
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.6.6-12
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Mon Apr 25 2022 Ankur Sinha <ankursinha AT fedoraproject DOT org> - 3.6.6-11 * Mon Apr 25 2022 Ankur Sinha <ankursinha AT fedoraproject DOT org> - 3.6.6-11
- Disable sporadically failing test on s390x also - Disable sporadically failing test on s390x also

Loading…
Cancel
Save