зеркало из https://github.com/mozilla/pjs.git
Mozilla bug 99052, fixing crash.
Adding null and error checks. r=nelsonb
This commit is contained in:
Родитель
40d5ffc932
Коммит
af702fb14e
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче