diff options
-rw-r--r-- | src/lib/libcrypto/x509v3/v3_akey.c | 13 | ||||
-rw-r--r-- | src/lib/libcrypto/x509v3/v3_alt.c | 15 |
2 files changed, 22 insertions, 6 deletions
diff --git a/src/lib/libcrypto/x509v3/v3_akey.c b/src/lib/libcrypto/x509v3/v3_akey.c index 65184b19b6..e49f45fe0a 100644 --- a/src/lib/libcrypto/x509v3/v3_akey.c +++ b/src/lib/libcrypto/x509v3/v3_akey.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: v3_akey.c,v 1.21 2019/04/21 16:50:34 tb Exp $ */ | 1 | /* $OpenBSD: v3_akey.c,v 1.22 2019/04/22 17:10:01 tb Exp $ */ |
2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
3 | * project 1999. | 3 | * project 1999. |
4 | */ | 4 | */ |
@@ -91,8 +91,14 @@ static STACK_OF(CONF_VALUE) * | |||
91 | i2v_AUTHORITY_KEYID(X509V3_EXT_METHOD *method, AUTHORITY_KEYID *akeyid, | 91 | i2v_AUTHORITY_KEYID(X509V3_EXT_METHOD *method, AUTHORITY_KEYID *akeyid, |
92 | STACK_OF(CONF_VALUE) *extlist) | 92 | STACK_OF(CONF_VALUE) *extlist) |
93 | { | 93 | { |
94 | STACK_OF(CONF_VALUE) *free_extlist = NULL; | ||
94 | char *tmpstr = NULL; | 95 | char *tmpstr = NULL; |
95 | 96 | ||
97 | if (extlist == NULL) { | ||
98 | if ((free_extlist = extlist = sk_CONF_VALUE_new_null()) == NULL) | ||
99 | return NULL; | ||
100 | } | ||
101 | |||
96 | if (akeyid->keyid != NULL) { | 102 | if (akeyid->keyid != NULL) { |
97 | if ((tmpstr = hex_to_string(akeyid->keyid->data, | 103 | if ((tmpstr = hex_to_string(akeyid->keyid->data, |
98 | akeyid->keyid->length)) == NULL) | 104 | akeyid->keyid->length)) == NULL) |
@@ -119,11 +125,14 @@ i2v_AUTHORITY_KEYID(X509V3_EXT_METHOD *method, AUTHORITY_KEYID *akeyid, | |||
119 | tmpstr = NULL; | 125 | tmpstr = NULL; |
120 | } | 126 | } |
121 | 127 | ||
128 | if (sk_CONF_VALUE_num(extlist) <= 0) | ||
129 | goto err; | ||
130 | |||
122 | return extlist; | 131 | return extlist; |
123 | 132 | ||
124 | err: | 133 | err: |
125 | free(tmpstr); | 134 | free(tmpstr); |
126 | sk_CONF_VALUE_pop_free(extlist, X509V3_conf_free); | 135 | sk_CONF_VALUE_pop_free(free_extlist, X509V3_conf_free); |
127 | 136 | ||
128 | return NULL; | 137 | return NULL; |
129 | } | 138 | } |
diff --git a/src/lib/libcrypto/x509v3/v3_alt.c b/src/lib/libcrypto/x509v3/v3_alt.c index 2dc07b4025..0f0177ff8b 100644 --- a/src/lib/libcrypto/x509v3/v3_alt.c +++ b/src/lib/libcrypto/x509v3/v3_alt.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: v3_alt.c,v 1.29 2019/04/21 16:50:34 tb Exp $ */ | 1 | /* $OpenBSD: v3_alt.c,v 1.30 2019/04/22 17:10:01 tb Exp $ */ |
2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
3 | * project. | 3 | * project. |
4 | */ | 4 | */ |
@@ -127,11 +127,12 @@ STACK_OF(CONF_VALUE) * | |||
127 | i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method, GENERAL_NAMES *gens, | 127 | i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method, GENERAL_NAMES *gens, |
128 | STACK_OF(CONF_VALUE) *ret) | 128 | STACK_OF(CONF_VALUE) *ret) |
129 | { | 129 | { |
130 | STACK_OF(CONF_VALUE) *free_ret = NULL; | ||
130 | GENERAL_NAME *gen; | 131 | GENERAL_NAME *gen; |
131 | int i; | 132 | int i; |
132 | 133 | ||
133 | if (ret == NULL) { | 134 | if (ret == NULL) { |
134 | if ((ret = sk_CONF_VALUE_new_null()) == NULL) | 135 | if ((free_ret = ret = sk_CONF_VALUE_new_null()) == NULL) |
135 | return NULL; | 136 | return NULL; |
136 | } | 137 | } |
137 | 138 | ||
@@ -145,7 +146,7 @@ i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method, GENERAL_NAMES *gens, | |||
145 | return ret; | 146 | return ret; |
146 | 147 | ||
147 | err: | 148 | err: |
148 | sk_CONF_VALUE_pop_free(ret, X509V3_conf_free); | 149 | sk_CONF_VALUE_pop_free(free_ret, X509V3_conf_free); |
149 | 150 | ||
150 | return NULL; | 151 | return NULL; |
151 | } | 152 | } |
@@ -154,10 +155,16 @@ STACK_OF(CONF_VALUE) * | |||
154 | i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, GENERAL_NAME *gen, | 155 | i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, GENERAL_NAME *gen, |
155 | STACK_OF(CONF_VALUE) *ret) | 156 | STACK_OF(CONF_VALUE) *ret) |
156 | { | 157 | { |
158 | STACK_OF(CONF_VALUE) *free_ret = NULL; | ||
157 | unsigned char *p; | 159 | unsigned char *p; |
158 | char oline[256], htmp[5]; | 160 | char oline[256], htmp[5]; |
159 | int i; | 161 | int i; |
160 | 162 | ||
163 | if (ret == NULL) { | ||
164 | if ((free_ret = ret = sk_CONF_VALUE_new_null()) == NULL) | ||
165 | return NULL; | ||
166 | } | ||
167 | |||
161 | switch (gen->type) { | 168 | switch (gen->type) { |
162 | case GEN_OTHERNAME: | 169 | case GEN_OTHERNAME: |
163 | if (!X509V3_add_value("othername", "<unsupported>", &ret)) | 170 | if (!X509V3_add_value("othername", "<unsupported>", &ret)) |
@@ -231,7 +238,7 @@ i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, GENERAL_NAME *gen, | |||
231 | return ret; | 238 | return ret; |
232 | 239 | ||
233 | err: | 240 | err: |
234 | sk_CONF_VALUE_pop_free(ret, X509V3_conf_free); | 241 | sk_CONF_VALUE_pop_free(free_ret, X509V3_conf_free); |
235 | 242 | ||
236 | return NULL; | 243 | return NULL; |
237 | } | 244 | } |