diff options
author | tb <> | 2019-04-22 17:26:34 +0000 |
---|---|---|
committer | tb <> | 2019-04-22 17:26:34 +0000 |
commit | f57f4a881874c22a27e2ae41e4822b40b63187ee (patch) | |
tree | 5152c321dc50578d1caf8c44abedee2d2c557f2b /src | |
parent | 23beb8133d5c77469171fcbf6baa82999a899d86 (diff) | |
download | openbsd-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.c | 31 |
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 | ||
150 | static STACK_OF(CONF_VALUE) * | 150 | static STACK_OF(CONF_VALUE) * |
151 | i2v_EXTENDED_KEY_USAGE(const X509V3_EXT_METHOD *method, void *a, | 151 | i2v_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 | ||
167 | static void * | 182 | static void * |