CSM_Free3::SMTI_Sign bug
[email protected] Thu, 12 Jul 2001 17:18:07 -0400
| Newsgroups | gmane.ietf.sfl |
|---|---|
| Message-ID | <[email protected]> |
Hi,
I think CSM_Free3::SMTI_Sign have a bug. This bug crash the application.
(in version 1.9)
/***************************************************/
SM_RET_VAL CSM_Free3::SMTI_Sign(
CSM_Buffer *pData, // input, data to be signed
CSM_Buffer *pEncryptedDigest, // signature output
CSM_Buffer *pDigest) // digest
{
CSM_Buffer *pbufX = NULL; // temp spot for X value
char *pszPassword = NULL; // temp spot for password
Integer *px; // x value in integer form
CSM_OID *pSigOID=NULL;
CSM_OID *pDigOID=NULL;
CryptoPP::ByteQueue privateKey;
CSM_Buffer bufferDigest;
CSM_Buffer *pTempDigest = &bufferDigest;
<-------------------------- ??????
CSM_Buffer tmpEncryptedDigest;
DigestInfo rsaDigestInfo;
CSM_Buffer *pTempBuf = NULL;
pSigOID=GetPrefDigestEncryption();
pDigOID=GetPrefDigest();
SME_SETUP("CSM_Free3::SMTI_Sign");
if ((pData == NULL) || (pEncryptedDigest == NULL))
SME_THROW(SM_MISSING_PARAM, NULL, NULL)
// if pDigest was passed in, use it, otherwise, use local temp
if (pDigest != NULL)
pTempDigest = pDigest;
// digest the incoming data
if (pTempDigest == NULL || !pTempDigest->Length()) <-------------
??????
{
SME(SMTI_DigestData(pData, pTempDigest));
}
...........
if (pTempDigest && pTempDigest != pDigest)
delete pTempDigest; <----------------------------------- Ouch
!!!!
if (pDigOID)
delete pDigOID;
SME_FINISH
SME_CATCH_SETUP
// catch/cleanup logic as necessary
if (pbufX)
delete pbufX;
if (pszPassword)
free (pszPassword);
if (pSigOID)
delete pSigOID;
if (pDigOID)
delete pDigOID;
SME_CATCH_FINISH
return SM_NO_ERROR;
}
/***************************************************/
Beacause we are not forced to put pDigest in parameter we need pTempDigest
and that's correct. What i suggest is that we allocate pTempDigest
dynamically and remove bufferDigest.
**************************************************************************
Eric Boudreault
------------------------------------------------
Programmeur
------------------------------------------------
Motus Technologies
390, St-Vallier Est
Bureau 100
Québec, Qc
G1K 3P6
Tél.: 521-2100 ext.#242
Fax.: 521-2101
courriel: [email protected]
**************************************************************************