diff options
Diffstat (limited to 'security/nss/lib/pkcs7/certread.c')
-rw-r--r-- | security/nss/lib/pkcs7/certread.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/security/nss/lib/pkcs7/certread.c b/security/nss/lib/pkcs7/certread.c index 2d692f1a2..3091f9947 100644 --- a/security/nss/lib/pkcs7/certread.c +++ b/security/nss/lib/pkcs7/certread.c @@ -492,14 +492,16 @@ typedef struct { static SECStatus collect_certs(void *arg, SECItem **certs, int numcerts) { - SECStatus rv; - collect_args *collectArgs; - - collectArgs = (collect_args *)arg; - - rv = SECITEM_CopyItem(collectArgs->arena, &collectArgs->cert, *certs); - - return (rv); + collect_args *collectArgs = (collect_args *)arg; + if (!collectArgs || !collectArgs->arena) { + PORT_SetError(SEC_ERROR_INVALID_ARGS); + return SECFailure; + } + if (numcerts < 1 || !certs || !*certs) { + PORT_SetError(SEC_ERROR_BAD_DER); + return SECFailure; + } + return SECITEM_CopyItem(collectArgs->arena, &collectArgs->cert, *certs); } /* |