@@ -557,21 +557,16 @@ ossl_pkcs7_get_signer(VALUE self)
557
557
{
558
558
PKCS7 * pkcs7 ;
559
559
STACK_OF (PKCS7_SIGNER_INFO ) * sk ;
560
- PKCS7_SIGNER_INFO * si ;
561
560
int num , i ;
562
561
VALUE ary ;
563
562
564
563
GetPKCS7 (self , pkcs7 );
565
- if (!(sk = PKCS7_get_signer_info (pkcs7 ))) {
566
- OSSL_Debug ("OpenSSL::PKCS7#get_signer_info == NULL!" );
567
- return rb_ary_new ();
568
- }
569
- if ((num = sk_PKCS7_SIGNER_INFO_num (sk )) < 0 ) {
570
- ossl_raise (ePKCS7Error , "Negative number of signers!" );
571
- }
572
- ary = rb_ary_new2 (num );
564
+ if (!(sk = PKCS7_get_signer_info (pkcs7 )))
565
+ return rb_ary_new ();
566
+ num = sk_PKCS7_SIGNER_INFO_num (sk );
567
+ ary = rb_ary_new_capa (num );
573
568
for (i = 0 ; i < num ; i ++ ) {
574
- si = sk_PKCS7_SIGNER_INFO_value (sk , i );
569
+ PKCS7_SIGNER_INFO * si = sk_PKCS7_SIGNER_INFO_value (sk , i );
575
570
rb_ary_push (ary , ossl_pkcs7si_new (si ));
576
571
}
577
572
@@ -604,7 +599,6 @@ ossl_pkcs7_get_recipient(VALUE self)
604
599
{
605
600
PKCS7 * pkcs7 ;
606
601
STACK_OF (PKCS7_RECIP_INFO ) * sk ;
607
- PKCS7_RECIP_INFO * si ;
608
602
int num , i ;
609
603
VALUE ary ;
610
604
@@ -615,13 +609,11 @@ ossl_pkcs7_get_recipient(VALUE self)
615
609
sk = pkcs7 -> d .signed_and_enveloped -> recipientinfo ;
616
610
else sk = NULL ;
617
611
if (!sk ) return rb_ary_new ();
618
- if ((num = sk_PKCS7_RECIP_INFO_num (sk )) < 0 ) {
619
- ossl_raise (ePKCS7Error , "Negative number of recipient!" );
620
- }
621
- ary = rb_ary_new2 (num );
612
+ num = sk_PKCS7_RECIP_INFO_num (sk );
613
+ ary = rb_ary_new_capa (num );
622
614
for (i = 0 ; i < num ; i ++ ) {
623
- si = sk_PKCS7_RECIP_INFO_value (sk , i );
624
- rb_ary_push (ary , ossl_pkcs7ri_new (si ));
615
+ PKCS7_RECIP_INFO * ri = sk_PKCS7_RECIP_INFO_value (sk , i );
616
+ rb_ary_push (ary , ossl_pkcs7ri_new (ri ));
625
617
}
626
618
627
619
return ary ;
@@ -701,7 +693,10 @@ ossl_pkcs7_set_certificates(VALUE self, VALUE ary)
701
693
X509 * cert ;
702
694
703
695
certs = pkcs7_get_certs (self );
704
- while ((cert = sk_X509_pop (certs ))) X509_free (cert );
696
+ if (certs ) {
697
+ while ((cert = sk_X509_pop (certs )))
698
+ X509_free (cert );
699
+ }
705
700
rb_block_call (ary , rb_intern ("each" ), 0 , 0 , ossl_pkcs7_set_certs_i , self );
706
701
707
702
return ary ;
@@ -710,7 +705,10 @@ ossl_pkcs7_set_certificates(VALUE self, VALUE ary)
710
705
static VALUE
711
706
ossl_pkcs7_get_certificates (VALUE self )
712
707
{
713
- return ossl_x509_sk2ary (pkcs7_get_certs (self ));
708
+ STACK_OF (X509 ) * certs = pkcs7_get_certs (self );
709
+ if (!certs )
710
+ return Qnil ;
711
+ return ossl_x509_sk2ary (certs );
714
712
}
715
713
716
714
static VALUE
@@ -741,7 +739,10 @@ ossl_pkcs7_set_crls(VALUE self, VALUE ary)
741
739
X509_CRL * crl ;
742
740
743
741
crls = pkcs7_get_crls (self );
744
- while ((crl = sk_X509_CRL_pop (crls ))) X509_CRL_free (crl );
742
+ if (crls ) {
743
+ while ((crl = sk_X509_CRL_pop (crls )))
744
+ X509_CRL_free (crl );
745
+ }
745
746
rb_block_call (ary , rb_intern ("each" ), 0 , 0 , ossl_pkcs7_set_crls_i , self );
746
747
747
748
return ary ;
@@ -750,7 +751,10 @@ ossl_pkcs7_set_crls(VALUE self, VALUE ary)
750
751
static VALUE
751
752
ossl_pkcs7_get_crls (VALUE self )
752
753
{
753
- return ossl_x509crl_sk2ary (pkcs7_get_crls (self ));
754
+ STACK_OF (X509_CRL ) * crls = pkcs7_get_crls (self );
755
+ if (!crls )
756
+ return Qnil ;
757
+ return ossl_x509crl_sk2ary (crls );
754
758
}
755
759
756
760
static VALUE
0 commit comments