- Fix TALOS-2024-1924, CVE-2024-22391 (RHBZ#2277288) - Fix TALOS-2024-1935, CVE-2024-22373 (RHBZ#2277292) - Fix TALOS-2024-1944, CVE-2024-25569 (RHBZ#2277296)epel9 imports/epel9/gdcm-3.0.12-7.el9
parent
15686e9f2f
commit
8d8c36a199
@ -0,0 +1,63 @@
|
||||
From 21a793095ab3aecb794c56439873e5b181ea9d91 Mon Sep 17 00:00:00 2001
|
||||
From: Mathieu Malaterre <mathieu.malaterre@gmail.com>
|
||||
Date: Wed, 21 Feb 2024 02:00:38 -0800
|
||||
Subject: [PATCH] Remove symptoms of TALOS-2024-1924
|
||||
|
||||
|
||||
diff --git a/Source/DataStructureAndEncodingDefinition/gdcmElement.h b/Source/DataStructureAndEncodingDefinition/gdcmElement.h
|
||||
index b49b093dc..15fb3a117 100644
|
||||
--- a/Source/DataStructureAndEncodingDefinition/gdcmElement.h
|
||||
+++ b/Source/DataStructureAndEncodingDefinition/gdcmElement.h
|
||||
@@ -473,7 +473,7 @@ public:
|
||||
assert( _is ); // Is stream valid ?
|
||||
_is.read( reinterpret_cast<char*>(data+0), type_size);
|
||||
for(unsigned long i=1; i<length; ++i) {
|
||||
- assert( _is );
|
||||
+ if( _is )
|
||||
_is.read( reinterpret_cast<char*>(data+i), type_size );
|
||||
}
|
||||
//ByteSwap<T>::SwapRangeFromSwapCodeIntoSystem(data,
|
||||
@@ -489,7 +489,7 @@ public:
|
||||
assert( _is ); // Is stream valid ?
|
||||
_is.read( reinterpret_cast<char*>(data+0), type_size);
|
||||
for(unsigned long i=1; i<length; ++i) {
|
||||
- assert( _is );
|
||||
+ if( _is )
|
||||
_is.read( reinterpret_cast<char*>(data+i), type_size );
|
||||
}
|
||||
//ByteSwap<T>::SwapRangeFromSwapCodeIntoSystem(data,
|
||||
diff --git a/Source/MediaStorageAndFileFormat/gdcmLookupTable.cxx b/Source/MediaStorageAndFileFormat/gdcmLookupTable.cxx
|
||||
index 0d5a99c40..2c566923b 100644
|
||||
--- a/Source/MediaStorageAndFileFormat/gdcmLookupTable.cxx
|
||||
+++ b/Source/MediaStorageAndFileFormat/gdcmLookupTable.cxx
|
||||
@@ -130,7 +130,10 @@ void LookupTable::SetLUT(LookupTableType type, const unsigned char *array,
|
||||
|
||||
if( !IncompleteLUT )
|
||||
{
|
||||
- assert( Internal->RGB.size() == 3*Internal->Length[type]*(BitSample/8) );
|
||||
+ if( Internal->RGB.size() != 3*Internal->Length[type]*(BitSample/8) ) {
|
||||
+ gdcmErrorMacro( "Invalid length for LUT data" );
|
||||
+ return;
|
||||
+ }
|
||||
}
|
||||
// Too funny: 05115014-mr-siemens-avanto-syngo-with-palette-icone.dcm
|
||||
// There is pseudo PALETTE_COLOR LUT in the Icon, if one look carefully the LUT values
|
||||
diff --git a/Source/MediaStorageAndFileFormat/gdcmPixmapReader.cxx b/Source/MediaStorageAndFileFormat/gdcmPixmapReader.cxx
|
||||
index 9c30ff8b9..258a23c1f 100644
|
||||
--- a/Source/MediaStorageAndFileFormat/gdcmPixmapReader.cxx
|
||||
+++ b/Source/MediaStorageAndFileFormat/gdcmPixmapReader.cxx
|
||||
@@ -306,8 +306,12 @@ static void DoIconImage(const DataSet& rootds, Pixmap& image)
|
||||
unsigned long check =
|
||||
(el_us3.GetValue(0) ? el_us3.GetValue(0) : 65536)
|
||||
* el_us3.GetValue(2) / 8;
|
||||
- assert( check == lut_raw->GetLength() || 2 * check == lut_raw->GetLength()
|
||||
- || check + 1 == lut_raw->GetLength() ); (void)check;
|
||||
+ if(!( check == lut_raw->GetLength() || 2 * check == lut_raw->GetLength()
|
||||
+ || check + 1 == lut_raw->GetLength() )) {
|
||||
+ gdcmErrorMacro( "Icon Sequence is invalid. Giving up" );
|
||||
+ pixeldata.Clear();
|
||||
+ return;
|
||||
+ }
|
||||
}
|
||||
else if( ds.FindDataElement( seglut ) )
|
||||
{
|
@ -0,0 +1,38 @@
|
||||
From 371c2d937e37b08a46eeb0628c553ce4608a45df Mon Sep 17 00:00:00 2001
|
||||
From: Mathieu Malaterre <mathieu.malaterre@gmail.com>
|
||||
Date: Wed, 21 Feb 2024 02:18:35 -0800
|
||||
Subject: [PATCH] Remove symptoms from TALOS-2024-1935
|
||||
|
||||
|
||||
diff --git a/Source/MediaStorageAndFileFormat/gdcmImageChangeTransferSyntax.cxx b/Source/MediaStorageAndFileFormat/gdcmImageChangeTransferSyntax.cxx
|
||||
index fcb61e611..9457c5e9b 100644
|
||||
--- a/Source/MediaStorageAndFileFormat/gdcmImageChangeTransferSyntax.cxx
|
||||
+++ b/Source/MediaStorageAndFileFormat/gdcmImageChangeTransferSyntax.cxx
|
||||
@@ -421,6 +421,7 @@ bool ImageChangeTransferSyntax::Change()
|
||||
if( !b )
|
||||
{
|
||||
gdcmErrorMacro( "Error in getting buffer from input image." );
|
||||
+ delete bv0;
|
||||
return false;
|
||||
}
|
||||
pixeldata.SetValue( *bv0 );
|
||||
diff --git a/Source/MediaStorageAndFileFormat/gdcmJPEG2000Codec.cxx b/Source/MediaStorageAndFileFormat/gdcmJPEG2000Codec.cxx
|
||||
index 10ac23cca..430a24a87 100644
|
||||
--- a/Source/MediaStorageAndFileFormat/gdcmJPEG2000Codec.cxx
|
||||
+++ b/Source/MediaStorageAndFileFormat/gdcmJPEG2000Codec.cxx
|
||||
@@ -826,8 +826,13 @@ std::pair<char *, size_t> JPEG2000Codec::DecodeByStreamsCommon(char *dummy_buffe
|
||||
|
||||
// ELSCINT1_JP2vsJ2K.dcm
|
||||
// -> prec = 12, bpp = 0, sgnd = 0
|
||||
- //assert( wr == Dimensions[0] );
|
||||
- //assert( hr == Dimensions[1] );
|
||||
+ if( wr != Dimensions[0] || hr != Dimensions[1] ) {
|
||||
+ gdcmErrorMacro("Invalid dimension");
|
||||
+ delete[] raw;
|
||||
+ opj_destroy_codec(dinfo);
|
||||
+ opj_image_destroy(image);
|
||||
+ return std::pair<char*,size_t>(nullptr,0);
|
||||
+ }
|
||||
if( comp->sgnd != PF.GetPixelRepresentation() )
|
||||
{
|
||||
PF.SetPixelRepresentation( (uint16_t)comp->sgnd );
|
@ -0,0 +1,36 @@
|
||||
From dda17aa8d5939e4e255ebba67aacf34b09d88692 Mon Sep 17 00:00:00 2001
|
||||
From: Mathieu Malaterre <mathieu.malaterre@gmail.com>
|
||||
Date: Wed, 21 Feb 2024 02:44:55 -0800
|
||||
Subject: [PATCH] Remove symptoms from TALOS-2024-1944
|
||||
|
||||
|
||||
diff --git a/Source/MediaStorageAndFileFormat/gdcmRAWCodec.cxx b/Source/MediaStorageAndFileFormat/gdcmRAWCodec.cxx
|
||||
index 19f739399..46392461e 100644
|
||||
--- a/Source/MediaStorageAndFileFormat/gdcmRAWCodec.cxx
|
||||
+++ b/Source/MediaStorageAndFileFormat/gdcmRAWCodec.cxx
|
||||
@@ -112,9 +112,7 @@ bool RAWCodec::DecodeBytes(const char* inBytes, size_t inBufferLength,
|
||||
if(!r) return false;
|
||||
|
||||
std::string str = os.str();
|
||||
- //std::string::size_type check = str.size();//unused
|
||||
|
||||
-
|
||||
if( this->GetPixelFormat() == PixelFormat::UINT12 ||
|
||||
this->GetPixelFormat() == PixelFormat::INT12 )
|
||||
{
|
||||
@@ -135,7 +133,14 @@ bool RAWCodec::DecodeBytes(const char* inBytes, size_t inBufferLength,
|
||||
// DermaColorLossLess.dcm
|
||||
//assert (check == inOutBufferLength || check == inOutBufferLength + 1);
|
||||
// problem with: SIEMENS_GBS_III-16-ACR_NEMA_1.acr
|
||||
- memcpy(outBytes, str.c_str(), inOutBufferLength);
|
||||
+ size_t len = str.size();
|
||||
+ if( inOutBufferLength <= len )
|
||||
+ memcpy(outBytes, str.c_str(), inOutBufferLength);
|
||||
+ else
|
||||
+ {
|
||||
+ gdcmWarningMacro( "Requesting too much data. Truncating result" );
|
||||
+ memcpy(outBytes, str.c_str(), len);
|
||||
+ }
|
||||
}
|
||||
|
||||
return r;
|
Loading…
Reference in new issue