Yet another stack.
[openssl.git] / crypto / asn1 / x_cinf.c
index fb6122eea4bf02c9d590377d5f83bdd0e12cc670..6f280923abc8b2c40e96c2727fd6e813c01e5444 100644 (file)
@@ -74,7 +74,9 @@ int i2d_X509_CINF(X509_CINF *a, unsigned char **pp)
        M_ASN1_I2D_len(a->key,                  i2d_X509_PUBKEY);
        M_ASN1_I2D_len_IMP_opt(a->issuerUID,    i2d_ASN1_BIT_STRING);
        M_ASN1_I2D_len_IMP_opt(a->subjectUID,   i2d_ASN1_BIT_STRING);
        M_ASN1_I2D_len(a->key,                  i2d_X509_PUBKEY);
        M_ASN1_I2D_len_IMP_opt(a->issuerUID,    i2d_ASN1_BIT_STRING);
        M_ASN1_I2D_len_IMP_opt(a->subjectUID,   i2d_ASN1_BIT_STRING);
-       M_ASN1_I2D_len_EXP_SEQUENCE_opt(a->extensions,i2d_X509_EXTENSION,3,V_ASN1_SEQUENCE,v2);
+       M_ASN1_I2D_len_EXP_SEQUENCE_opt_type(X509_EXTENSION,a->extensions,
+                                            i2d_X509_EXTENSION,3,
+                                            V_ASN1_SEQUENCE,v2);
 
        M_ASN1_I2D_seq_total();
 
 
        M_ASN1_I2D_seq_total();
 
@@ -87,7 +89,9 @@ int i2d_X509_CINF(X509_CINF *a, unsigned char **pp)
        M_ASN1_I2D_put(a->key,                  i2d_X509_PUBKEY);
        M_ASN1_I2D_put_IMP_opt(a->issuerUID,    i2d_ASN1_BIT_STRING,1);
        M_ASN1_I2D_put_IMP_opt(a->subjectUID,   i2d_ASN1_BIT_STRING,2);
        M_ASN1_I2D_put(a->key,                  i2d_X509_PUBKEY);
        M_ASN1_I2D_put_IMP_opt(a->issuerUID,    i2d_ASN1_BIT_STRING,1);
        M_ASN1_I2D_put_IMP_opt(a->subjectUID,   i2d_ASN1_BIT_STRING,2);
-       M_ASN1_I2D_put_EXP_SEQUENCE_opt(a->extensions,i2d_X509_EXTENSION,3,V_ASN1_SEQUENCE,v2);
+       M_ASN1_I2D_put_EXP_SEQUENCE_opt_type(X509_EXTENSION,a->extensions,
+                                            i2d_X509_EXTENSION,3,
+                                            V_ASN1_SEQUENCE,v2);
 
        M_ASN1_I2D_finish();
        }
 
        M_ASN1_I2D_finish();
        }
@@ -147,11 +151,13 @@ X509_CINF *d2i_X509_CINF(X509_CINF **a, unsigned char **pp, long length)
 #endif
                {
                if (ret->extensions != NULL)
 #endif
                {
                if (ret->extensions != NULL)
-                       while (sk_num(ret->extensions))
-                               X509_EXTENSION_free((X509_EXTENSION *)
-                                       sk_pop(ret->extensions));
-               M_ASN1_D2I_get_EXP_set_opt(ret->extensions,d2i_X509_EXTENSION,
-                       X509_EXTENSION_free,3,V_ASN1_SEQUENCE);
+                       while (sk_X509_EXTENSION_num(ret->extensions))
+                               X509_EXTENSION_free(
+                                     sk_X509_EXTENSION_pop(ret->extensions));
+               M_ASN1_D2I_get_EXP_set_opt_type(X509_EXTENSION,ret->extensions,
+                                               d2i_X509_EXTENSION,
+                                               X509_EXTENSION_free,3,
+                                               V_ASN1_SEQUENCE);
                }
        M_ASN1_D2I_Finish(a,X509_CINF_free,ASN1_F_D2I_X509_CINF);
        }
                }
        M_ASN1_D2I_Finish(a,X509_CINF_free,ASN1_F_D2I_X509_CINF);
        }
@@ -188,7 +194,7 @@ void X509_CINF_free(X509_CINF *a)
        X509_PUBKEY_free(a->key);
        ASN1_BIT_STRING_free(a->issuerUID);
        ASN1_BIT_STRING_free(a->subjectUID);
        X509_PUBKEY_free(a->key);
        ASN1_BIT_STRING_free(a->issuerUID);
        ASN1_BIT_STRING_free(a->subjectUID);
-       sk_pop_free(a->extensions,X509_EXTENSION_free);
-       Free((char *)a);
+       sk_X509_EXTENSION_pop_free(a->extensions,X509_EXTENSION_free);
+       Free(a);
        }
 
        }