Fix for bug 336477 . Fix for CERT_UncacheCRL error checking. r=nelson

This commit is contained in:
julien.pierre.bugs%sun.com 2006-05-31 01:57:55 +00:00
Родитель 427cedfe9a
Коммит 5fc5a905a0
1 изменённых файлов: 14 добавлений и 12 удалений

Просмотреть файл

@ -37,7 +37,7 @@
/* /*
* Moved from secpkcs7.c * Moved from secpkcs7.c
* *
* $Id: crl.c,v 1.51 2006-05-18 20:46:19 nelson%bolyard.com Exp $ * $Id: crl.c,v 1.52 2006-05-31 01:57:55 julien.pierre.bugs%sun.com Exp $
*/ */
#include "cert.h" #include "cert.h"
@ -2776,27 +2776,29 @@ SECStatus CERT_UncacheCRL(CERTCertDBHandle* dbhandle, SECItem* olddercrl)
} }
if (PR_TRUE == dupe) if (PR_TRUE == dupe)
{ {
DPCache_RemoveCRL(cache, i); /* got a match */ rv = DPCache_RemoveCRL(cache, i); /* got a match */
cache->mustchoose = PR_TRUE; if (SECSuccess == rv) {
removed = PR_TRUE; cache->mustchoose = PR_TRUE;
removed = PR_TRUE;
}
break; break;
} }
} }
DPCache_UnlockWrite(); DPCache_UnlockWrite();
rv = CachedCrl_Destroy(returned); if (SECSuccess != CachedCrl_Destroy(returned) ) {
rv = SECFailure;
}
} }
ReleaseDPCache(cache, writeLocked); ReleaseDPCache(cache, writeLocked);
if (PR_TRUE != removed)
{
rv = SECFailure;
}
} }
SEC_DestroyCrl(oldcrl); /* need to do this because object is refcounted */ if (SECSuccess != SEC_DestroyCrl(oldcrl) ) {
if (PR_TRUE != removed) /* need to do this because object is refcounted */
rv = SECFailure;
}
if (SECSuccess == rv && PR_TRUE != removed)
{ {
PORT_SetError(SEC_ERROR_CRL_NOT_FOUND); PORT_SetError(SEC_ERROR_CRL_NOT_FOUND);
} }