[Dcmlib] gdcm version 0.6: correction
jean-michel.rouet at philips.com
jean-michel.rouet at philips.com
Tue Nov 9 13:52:17 CET 2004
J'ai un probleme avec la derniere version cvs de GDCM.
Apres recompil, les tests plantent (entre autre) dans
TestReadWriteReadCompare sur l'image siemens_gbs_iii-16-acr_nema_1.acr
Apres une courte séance de debug et de purify, il semble qu'il y a un
probleme dans
void PixelConvert::AllocateDecompressed()
{
if ( Decompressed ) {
delete [] Decompressed;
}
Decompressed = new uint8_t[ DecompressedSize ];
}
qui aloue DecompressedSize (ici 131072 octets = 256*256*1*(16/2)*1)
alors que
bool PixelConvert::ReadAndDecompressPixelData( std::ifstream* fp )
{
ComputeDecompressedAndRGBSizes();
AllocateDecompressed();
...<skip>..
//////////////////////////////////////////////////
//// Second stage: read from disk dans decompress.
if ( BitsAllocated == 12 )
{
ReadAndDecompress12BitsTo16Bits( fp);
}
else if ( IsDecompressed )
{
fp->read( (char*)Decompressed, PixelDataLength);
...<skip>...
}
le fread ici utilise PixelDataLength (ici 132096 octets, valeur lue dans
le header dicom si je comprends bien).
d'ou des debordements de buffer catastrophiques pour la suite...
Est-ce que DecompressedSize ne pourrait pas etre fixé au minimum a
PixelDataLength ?
JM
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.creatis.insa-lyon.fr/pipermail/dcmlib/attachments/20041109/b6fe2927/attachment.html>
More information about the Dcmlib
mailing list