summaryrefslogtreecommitdiffstats
path: root/security/nss/lib/pkcs7/certread.c
diff options
context:
space:
mode:
Diffstat (limited to 'security/nss/lib/pkcs7/certread.c')
-rw-r--r--security/nss/lib/pkcs7/certread.c18
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);
}
/*