Mozilla bug 99052, fixing crash.

Adding null and error checks.
r=nelsonb
This commit is contained in:
kaie%netscape.com 2001-09-12 21:53:31 +00:00
Родитель 40d5ffc932
Коммит af702fb14e
1 изменённых файлов: 35 добавлений и 14 удалений

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

@ -1556,20 +1556,41 @@ loser:
CERTCertList *
CERT_GetCertChainFromCert(CERTCertificate *cert, int64 time, SECCertUsage usage)
{
CERTCertList *chain;
CERTCertList *chain = NULL;
if (cert != NULL) {
chain = CERT_NewCertList();
cert = CERT_DupCertificate(cert);
while (SECITEM_CompareItem(&cert->derIssuer, &cert->derSubject)
!= SECEqual) {
CERT_AddCertToListTail(chain, cert);
cert = CERT_FindCertIssuer(cert, time, usage);
}
CERT_AddCertToListTail(chain, cert);
return chain;
if (NULL == cert) {
return NULL;
}
return NULL;
cert = CERT_DupCertificate(cert);
if (NULL == cert) {
PORT_SetError(SEC_ERROR_NO_MEMORY);
return NULL;
}
chain = CERT_NewCertList();
if (NULL == chain) {
PORT_SetError(SEC_ERROR_NO_MEMORY);
return NULL;
}
while (cert != NULL) {
if (SECSuccess != CERT_AddCertToListTail(chain, cert)) {
/* return partial chain */
PORT_SetError(SEC_ERROR_NO_MEMORY);
return chain;
}
if (SECITEM_CompareItem(&cert->derIssuer, &cert->derSubject)
== SECEqual) {
/* return complete chain */
return chain;
}
cert = CERT_FindCertIssuer(cert, time, usage);
}
/* return partial chain */
PORT_SetError(SEC_ERROR_UNKNOWN_ISSUER);
return chain;
}