prepare for next release
[oweals/openssl.git] / crypto / x509v3 / pcy_data.c
index fae74cac924c56c7afc60e8c68e9851f9b5f4112..fb392b901f0d6f6e0fc8f9b5eed02813251fe330 100644 (file)
@@ -1,5 +1,5 @@
 /* pcy_data.c */
-/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
+/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
  * project 2004.
  */
 /* ====================================================================
@@ -69,7 +69,7 @@ void policy_data_free(X509_POLICY_DATA *data)
        ASN1_OBJECT_free(data->valid_policy);
        /* Don't free qualifiers if shared */
        if (!(data->flags & POLICY_DATA_FLAG_SHARED_QUALIFIERS))
-               sk_POLICYINFO_pop_free(data->qualifier_set,
+               sk_POLICYQUALINFO_pop_free(data->qualifier_set,
                                        POLICYQUALINFO_free);
        sk_ASN1_OBJECT_pop_free(data->expected_policy_set, ASN1_OBJECT_free);
        OPENSSL_free(data);
@@ -87,6 +87,12 @@ X509_POLICY_DATA *policy_data_new(POLICYINFO *policy, ASN1_OBJECT *id, int crit)
        X509_POLICY_DATA *ret;
        if (!policy && !id)
                return NULL;
+       if (id)
+               {
+               id = OBJ_dup(id);
+               if (!id)
+                       return NULL;
+               }
        ret = OPENSSL_malloc(sizeof(X509_POLICY_DATA));
        if (!ret)
                return NULL;
@@ -94,6 +100,8 @@ X509_POLICY_DATA *policy_data_new(POLICYINFO *policy, ASN1_OBJECT *id, int crit)
        if (!ret->expected_policy_set)
                {
                OPENSSL_free(ret);
+               if (id)
+                       ASN1_OBJECT_free(id);
                return NULL;
                }