diff options
| author | tb <> | 2019-04-22 17:26:34 +0000 |
|---|---|---|
| committer | tb <> | 2019-04-22 17:26:34 +0000 |
| commit | 3c4ff2e2dc8678ae063461de4026f7a0c6a46325 (patch) | |
| tree | 5152c321dc50578d1caf8c44abedee2d2c557f2b /src/lib/libcrypto/x509v3/v3_extku.c | |
| parent | 824eaad7dfe50d2858bd641b0211fe81bd2230c0 (diff) | |
| download | openbsd-3c4ff2e2dc8678ae063461de4026f7a0c6a46325.tar.gz openbsd-3c4ff2e2dc8678ae063461de4026f7a0c6a46325.tar.bz2 openbsd-3c4ff2e2dc8678ae063461de4026f7a0c6a46325.zip | |
Add error checking to i2v_EXTENDED_KEY_USAGE().
ok jsing
Diffstat (limited to 'src/lib/libcrypto/x509v3/v3_extku.c')
| -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 * |
