diff options
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 * | 
