@@ -414,6 +414,8 @@ PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509, EVP_PKEY *pkey,
414
414
415
415
static STACK_OF (X509 ) * pkcs7_get_signer_certs (const PKCS7 * p7 )
416
416
{
417
+ if (p7 -> d .ptr == NULL )
418
+ return NULL ;
417
419
if (PKCS7_type_is_signed (p7 ))
418
420
return p7 -> d .sign -> cert ;
419
421
if (PKCS7_type_is_signedAndEnveloped (p7 ))
@@ -423,6 +425,8 @@ static STACK_OF(X509) *pkcs7_get_signer_certs(const PKCS7 *p7)
423
425
424
426
static STACK_OF (PKCS7_RECIP_INFO ) * pkcs7_get_recipient_info (const PKCS7 * p7 )
425
427
{
428
+ if (p7 -> d .ptr == NULL )
429
+ return NULL ;
426
430
if (PKCS7_type_is_signedAndEnveloped (p7 ))
427
431
return p7 -> d .signed_and_enveloped -> recipientinfo ;
428
432
if (PKCS7_type_is_enveloped (p7 ))
@@ -440,13 +444,17 @@ void ossl_pkcs7_resolve_libctx(PKCS7 *p7)
440
444
const PKCS7_CTX * ctx = ossl_pkcs7_get0_ctx (p7 );
441
445
OSSL_LIB_CTX * libctx = ossl_pkcs7_ctx_get0_libctx (ctx );
442
446
const char * propq = ossl_pkcs7_ctx_get0_propq (ctx );
443
- STACK_OF (PKCS7_RECIP_INFO ) * rinfos = pkcs7_get_recipient_info ( p7 ) ;
444
- STACK_OF (PKCS7_SIGNER_INFO ) * sinfos = PKCS7_get_signer_info ( p7 ) ;
445
- STACK_OF (X509 ) * certs = pkcs7_get_signer_certs ( p7 ) ;
447
+ STACK_OF (PKCS7_RECIP_INFO ) * rinfos ;
448
+ STACK_OF (PKCS7_SIGNER_INFO ) * sinfos ;
449
+ STACK_OF (X509 ) * certs ;
446
450
447
- if (ctx == NULL )
451
+ if (ctx == NULL || p7 -> d . ptr == NULL )
448
452
return ;
449
453
454
+ rinfos = pkcs7_get_recipient_info (p7 );
455
+ sinfos = PKCS7_get_signer_info (p7 );
456
+ certs = pkcs7_get_signer_certs (p7 );
457
+
450
458
for (i = 0 ; i < sk_X509_num (certs ); i ++ )
451
459
ossl_x509_set0_libctx (sk_X509_value (certs , i ), libctx , propq );
452
460
0 commit comments