You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.4 KiB
37 lines
1.4 KiB
10 months ago
|
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;
|