Currently, NITFRasterBand::IReadBlock returns a block with color index 0 if there is no noDataValue (see code below). Unfortunatelly a lot of CADRG products (no to say all of them) do not define a transparent color. My patch consists in adding an extra color index for transparency if there is none in the product. Thus, empty subblocks will be displayed with this transparent color.
else /* nBlockResult == BLKREAD_NULL */
{
if( psImage->bNoDataSet )
memset( pImage, psImage->nNoDataValue,
psImage->nWordSize*psImage->nBlockWidth*psImage->nBlockHeight);
else
memset( pImage, 0,
psImage->nWordSize*psImage->nBlockWidth*psImage->nBlockHeight);
return CE_None;
}