<br><font size=2 face="sans-serif">J'ai un probleme avec la derniere version cvs de GDCM.</font>
<br><font size=2 face="sans-serif">Apres recompil, les tests plantent (entre autre) dans TestReadWriteReadCompare sur l'image siemens_gbs_iii-16-acr_nema_1.acr</font>
<br><font size=2 face="sans-serif">Apres une courte séance de debug et de purify, il semble qu'il y a un probleme dans </font>
<br>
<br>
<br><font size=2 color=blue><tt>void</tt></font><font size=2><tt> PixelConvert::AllocateDecompressed()</tt></font>
<br><font size=2><tt>{</tt></font>
<br><font size=2><tt>  </tt></font><font size=2 color=blue><tt>if</tt></font><font size=2><tt> ( Decompressed ) {</tt></font>
<br><font size=2><tt>     </tt></font><font size=2 color=blue><tt>delete</tt></font><font size=2><tt> [] Decompressed;</tt></font>
<br><font size=2><tt>  }</tt></font>
<br><font size=2><tt>  Decompressed = </tt></font><font size=2 color=blue><tt>new</tt></font><font size=2><tt> uint8_t[ DecompressedSize ];</tt></font>
<br><font size=2><tt>}</tt></font>
<br>
<br><font size=2 face="sans-serif">qui aloue DecompressedSize (ici 131072 octets = 256*256*1*(16/2)*1)</font>
<br><font size=2 face="sans-serif">alors que </font>
<br><font size=2 color=blue><tt>bool</tt></font><font size=2><tt> PixelConvert::ReadAndDecompressPixelData( std::ifstream* fp )</tt></font>
<br><font size=2><tt>{</tt></font>
<br><font size=2><tt>   ComputeDecompressedAndRGBSizes();</tt></font>
<br><font size=2><tt>   AllocateDecompressed();</tt></font>
<br><font size=2><tt>   </tt></font>
<br><font size=2><tt> ...<skip>..</tt></font>
<br>
<br><font size=2><tt>   </tt></font><font size=2 color=#008000><tt>//////////////////////////////////////////////////</tt></font>
<br><font size=2><tt>   </tt></font><font size=2 color=#008000><tt>//// Second stage: read from disk dans decompress.</tt></font>
<br><font size=2><tt>   </tt></font><font size=2 color=blue><tt>if</tt></font><font size=2><tt> ( BitsAllocated == 12 )</tt></font>
<br><font size=2><tt>   {</tt></font>
<br><font size=2><tt>      ReadAndDecompress12BitsTo16Bits( fp);</tt></font>
<br><font size=2><tt>   }</tt></font>
<br><font size=2><tt>   </tt></font><font size=2 color=blue><tt>else</tt></font><font size=2><tt> </tt></font><font size=2 color=blue><tt>if</tt></font><font size=2><tt> ( IsDecompressed )</tt></font>
<br><font size=2><tt>   {</tt></font>
<br><font size=2><tt>      fp->read( (</tt></font><font size=2 color=blue><tt>char</tt></font><font size=2><tt>*)Decompressed, PixelDataLength);</tt></font>
<br>
<br><font size=2><tt> ...<skip>...</tt></font>
<br><font size=2><tt>}</tt></font>
<br>
<br><font size=2 face="sans-serif">le fread ici utilise PixelDataLength (ici 132096 octets, valeur lue dans le header dicom si je comprends bien).</font>
<br>
<br><font size=2 face="sans-serif">d'ou des debordements de buffer catastrophiques pour la suite... </font>
<br>
<br><font size=2 face="sans-serif">Est-ce que DecompressedSize ne pourrait pas etre fixé au minimum a PixelDataLength ?</font>
<br>
<br><font size=2 face="sans-serif">JM</font>
<br>