summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortb <>2019-04-22 17:26:34 +0000
committertb <>2019-04-22 17:26:34 +0000
commitf57f4a881874c22a27e2ae41e4822b40b63187ee (patch)
tree5152c321dc50578d1caf8c44abedee2d2c557f2b /src
parent23beb8133d5c77469171fcbf6baa82999a899d86 (diff)
downloadopenbsd-f57f4a881874c22a27e2ae41e4822b40b63187ee.tar.gz
openbsd-f57f4a881874c22a27e2ae41e4822b40b63187ee.tar.bz2
openbsd-f57f4a881874c22a27e2ae41e4822b40b63187ee.zip
Add error checking to i2v_EXTENDED_KEY_USAGE().
ok jsing
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/x509v3/v3_extku.c31
1 files changed, 23 insertions, 8 deletions
diff --git a/src/lib/libcrypto/x509v3/v3_extku.c b/src/lib/libcrypto/x509v3/v3_extku.c
index 527e80b28e..59185c9bc7 100644
--- a/src/lib/libcrypto/x509v3/v3_extku.c
+++ b/src/lib/libcrypto/x509v3/v3_extku.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: v3_extku.c,v 1.15 2017/01/29 17:49:23 beck Exp $ */ 1/* $OpenBSD: v3_extku.c,v 1.16 2019/04/22 17:26:34 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 */
@@ -149,19 +149,34 @@ EXTENDED_KEY_USAGE_free(EXTENDED_KEY_USAGE *a)
149 149
150static STACK_OF(CONF_VALUE) * 150static STACK_OF(CONF_VALUE) *
151i2v_EXTENDED_KEY_USAGE(const X509V3_EXT_METHOD *method, void *a, 151i2v_EXTENDED_KEY_USAGE(const X509V3_EXT_METHOD *method, void *a,
152 STACK_OF(CONF_VALUE) *ext_list) 152 STACK_OF(CONF_VALUE) *extlist)
153{ 153{
154 EXTENDED_KEY_USAGE *eku = a;
155 int i;
156 ASN1_OBJECT *obj; 154 ASN1_OBJECT *obj;
155 EXTENDED_KEY_USAGE *eku = a;
156 STACK_OF(CONF_VALUE) *free_extlist = NULL;
157 char obj_tmp[80]; 157 char obj_tmp[80];
158 int i;
159
160 if (extlist == NULL) {
161 if ((free_extlist = extlist = sk_CONF_VALUE_new_null()) == NULL)
162 return NULL;
163 }
158 164
159 for (i = 0; i < sk_ASN1_OBJECT_num(eku); i++) { 165 for (i = 0; i < sk_ASN1_OBJECT_num(eku); i++) {
160 obj = sk_ASN1_OBJECT_value(eku, i); 166 if ((obj = sk_ASN1_OBJECT_value(eku, i)) == NULL)
161 i2t_ASN1_OBJECT(obj_tmp, 80, obj); 167 goto err;
162 X509V3_add_value(NULL, obj_tmp, &ext_list); 168 if (!i2t_ASN1_OBJECT(obj_tmp, sizeof obj_tmp, obj))
169 goto err;
170 if (!X509V3_add_value(NULL, obj_tmp, &extlist))
171 goto err;
163 } 172 }
164 return ext_list; 173
174 return extlist;
175
176 err:
177 sk_CONF_VALUE_pop_free(free_extlist, X509V3_conf_free);
178
179 return NULL;
165} 180}
166 181
167static void * 182static void *