Fix protocol downgrade bug in case of fragmented packets
[openssl.git] / apps / crl2p7.c
index 15138acb475cd755eab1cba5943ae984fa467839..42c6886b83f81e008b59b6188060ffc4040a0cca 100644 (file)
@@ -92,7 +92,7 @@ int MAIN(int argc, char **argv)
        PKCS7 *p7 = NULL;
        PKCS7_SIGNED *p7s = NULL;
        X509_CRL *crl=NULL;
-       STACK *certflst=NULL;
+       STACK_OF(OPENSSL_STRING) *certflst=NULL;
        STACK_OF(X509_CRL) *crl_stack=NULL;
        STACK_OF(X509) *cert_stack=NULL;
        int ret=1,nocrl=0;
@@ -140,8 +140,14 @@ int MAIN(int argc, char **argv)
                else if (strcmp(*argv,"-certfile") == 0)
                        {
                        if (--argc < 1) goto bad;
-                       if(!certflst) certflst = sk_new_null();
-                       sk_push(certflst,*(++argv));
+                       if(!certflst) certflst = sk_OPENSSL_STRING_new_null();
+                       if (!certflst)
+                               goto end;
+                       if (!sk_OPENSSL_STRING_push(certflst,*(++argv)))
+                               {
+                               sk_OPENSSL_STRING_free(certflst);
+                               goto end;
+                               }
                        }
                else
                        {
@@ -226,8 +232,8 @@ bad:
        if ((cert_stack=sk_X509_new_null()) == NULL) goto end;
        p7s->cert=cert_stack;
 
-       if(certflst) for(i = 0; i < sk_num(certflst); i++) {
-               certfile = sk_value(certflst, i);
+       if(certflst) for(i = 0; i < sk_OPENSSL_STRING_num(certflst); i++) {
+               certfile = sk_OPENSSL_STRING_value(certflst, i);
                if (add_certs_from_file(cert_stack,certfile) < 0)
                        {
                        BIO_printf(bio_err, "error loading certificates\n");
@@ -236,7 +242,7 @@ bad:
                        }
        }
 
-       sk_free(certflst);
+       sk_OPENSSL_STRING_free(certflst);
 
        if (outfile == NULL)
                {