petebrubaker - 2006-12-10

Logged In: YES
user_id=1201482
Originator: YES

Here's a fix for the padding.

hashmgr.cpp

void CHashOutput::_OutputHashBytes(UWORD8 *pHash, UINTPREF uLen)
{
UINTPREF i;
INTPREF j = 0;

RH_ASSERT(pHash != NULL);
RH_ASSERT(uLen >= 1);

if(m_bBase64 == true)
{
CBase64Codec baseCoder;
UWORD32 i32;

m_szHashBuffer[0] = 0;

i32 = RH_MAX_HASH_STRING;
baseCoder.Encode(pHash, uLen, (UWORD8 *)m_szHashBuffer, &i32);

printf(m_szHashBuffer);

return;
}

m_szBuffer[0] = 0;

#ifdef RH_LITTLE_ENDIAN
if ( m_bPadToFullWord == true )
{
UWORD32 padding = uLen % m_nCombineWords;
while ( padding )
{
strcat( m_szBuffer, "00" );
--padding;
}
}
#endif

for(i = 0; i < uLen; i++)
{
sprintf(m_szByteBuffer, m_szCharCode, pHash[i]);
strcat(m_szBuffer, m_szByteBuffer);

j++;
if(j == m_nCombineWords)
{
j = 0;

if(i != (uLen - 1)) strcat(m_szBuffer, " ");
}
}

#ifdef RH_BIG_ENDIAN
if ( m_bPadToFullWord == true )
{
UWORD32 padding = uLen % m_nCombineWords;
while ( padding )
{
strcat( m_szBuffer, "00" );
--padding;
}
}
#endif

printf(m_szBuffer);
}