зеркало из https://github.com/mozilla/gecko-dev.git
Functions NSS_CMSDigestedData_Encode_AfterData and
NSS_CMSDigestedData_Decode_AfterData - Since NSS_CMSDigestContext_FinishSingle always destroys the context, regardless of whether it returns SECSuccess or SECFailure, these functions have been changed to always NULL out the context pointer after calling NSS_CMSDigestContext_FinishSingle, regardless of the outcome. Bugscape bug 54208, r=relyea
This commit is contained in:
Родитель
d0960c05d3
Коммит
8a0ca297e4
|
@ -34,7 +34,7 @@
|
|||
/*
|
||||
* CMS digestedData methods.
|
||||
*
|
||||
* $Id: cmsdigdata.c,v 1.3 2002/01/25 19:08:17 relyea%netscape.com Exp $
|
||||
* $Id: cmsdigdata.c,v 1.4 2003/12/04 00:35:02 nelsonb%netscape.com Exp $
|
||||
*/
|
||||
|
||||
#include "cmslocal.h"
|
||||
|
@ -151,15 +151,17 @@ NSS_CMSDigestedData_Encode_BeforeData(NSSCMSDigestedData *digd)
|
|||
SECStatus
|
||||
NSS_CMSDigestedData_Encode_AfterData(NSSCMSDigestedData *digd)
|
||||
{
|
||||
SECStatus rv = SECSuccess;
|
||||
/* did we have digest calculation going on? */
|
||||
if (digd->contentInfo.digcx) {
|
||||
if (NSS_CMSDigestContext_FinishSingle(digd->contentInfo.digcx,
|
||||
digd->cmsg->poolp, &(digd->digest)) != SECSuccess)
|
||||
return SECFailure; /* error has been set by NSS_CMSDigestContext_FinishSingle */
|
||||
rv = NSS_CMSDigestContext_FinishSingle(digd->contentInfo.digcx,
|
||||
digd->cmsg->poolp,
|
||||
&(digd->digest));
|
||||
/* error has been set by NSS_CMSDigestContext_FinishSingle */
|
||||
digd->contentInfo.digcx = NULL;
|
||||
}
|
||||
|
||||
return SECSuccess;
|
||||
return rv;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -193,15 +195,17 @@ NSS_CMSDigestedData_Decode_BeforeData(NSSCMSDigestedData *digd)
|
|||
SECStatus
|
||||
NSS_CMSDigestedData_Decode_AfterData(NSSCMSDigestedData *digd)
|
||||
{
|
||||
SECStatus rv = SECSuccess;
|
||||
/* did we have digest calculation going on? */
|
||||
if (digd->contentInfo.digcx) {
|
||||
if (NSS_CMSDigestContext_FinishSingle(digd->contentInfo.digcx,
|
||||
digd->cmsg->poolp, &(digd->cdigest)) != SECSuccess)
|
||||
return SECFailure; /* error has been set by NSS_CMSDigestContext_FinishSingle */
|
||||
rv = NSS_CMSDigestContext_FinishSingle(digd->contentInfo.digcx,
|
||||
digd->cmsg->poolp,
|
||||
&(digd->cdigest));
|
||||
/* error has been set by NSS_CMSDigestContext_FinishSingle */
|
||||
digd->contentInfo.digcx = NULL;
|
||||
}
|
||||
|
||||
return SECSuccess;
|
||||
return rv;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Загрузка…
Ссылка в новой задаче