diff options
| author | tb <> | 2019-04-22 17:23:55 +0000 |
|---|---|---|
| committer | tb <> | 2019-04-22 17:23:55 +0000 |
| commit | 824eaad7dfe50d2858bd641b0211fe81bd2230c0 (patch) | |
| tree | 820346acfda5218140569d14f1738baf581c2f91 /src/lib/libc | |
| parent | c50b00d5889a23f7e451876dbab1edf03c717840 (diff) | |
| download | openbsd-824eaad7dfe50d2858bd641b0211fe81bd2230c0.tar.gz openbsd-824eaad7dfe50d2858bd641b0211fe81bd2230c0.tar.bz2 openbsd-824eaad7dfe50d2858bd641b0211fe81bd2230c0.zip | |
Add error checking to i2v_ASN1_BIT_STRING().
ok jsing
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libcrypto/x509v3/v3_bitst.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/lib/libcrypto/x509v3/v3_bitst.c b/src/lib/libcrypto/x509v3/v3_bitst.c index 039faf2fd6..178131edbb 100644 --- a/src/lib/libcrypto/x509v3/v3_bitst.c +++ b/src/lib/libcrypto/x509v3/v3_bitst.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: v3_bitst.c,v 1.14 2017/01/29 17:49:23 beck Exp $ */ | 1 | /* $OpenBSD: v3_bitst.c,v 1.15 2019/04/22 17:23:55 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 | */ |
| @@ -127,12 +127,26 @@ i2v_ASN1_BIT_STRING(X509V3_EXT_METHOD *method, ASN1_BIT_STRING *bits, | |||
| 127 | STACK_OF(CONF_VALUE) *ret) | 127 | STACK_OF(CONF_VALUE) *ret) |
| 128 | { | 128 | { |
| 129 | BIT_STRING_BITNAME *bnam; | 129 | BIT_STRING_BITNAME *bnam; |
| 130 | STACK_OF(CONF_VALUE) *free_ret; | ||
| 130 | 131 | ||
| 131 | for (bnam = method->usr_data; bnam->lname; bnam++) { | 132 | if (ret == NULL) { |
| 132 | if (ASN1_BIT_STRING_get_bit(bits, bnam->bitnum)) | 133 | if ((free_ret = ret = sk_CONF_VALUE_new_null()) == NULL) |
| 133 | X509V3_add_value(bnam->lname, NULL, &ret); | 134 | return NULL; |
| 135 | } | ||
| 136 | |||
| 137 | for (bnam = method->usr_data; bnam->lname != NULL; bnam++) { | ||
| 138 | if (!ASN1_BIT_STRING_get_bit(bits, bnam->bitnum)) | ||
| 139 | continue; | ||
| 140 | if (!X509V3_add_value(bnam->lname, NULL, &ret)) | ||
| 141 | goto err; | ||
| 134 | } | 142 | } |
| 143 | |||
| 135 | return ret; | 144 | return ret; |
| 145 | |||
| 146 | err: | ||
| 147 | sk_CONF_VALUE_pop_free(free_ret, X509V3_conf_free); | ||
| 148 | |||
| 149 | return NULL; | ||
| 136 | } | 150 | } |
| 137 | 151 | ||
| 138 | ASN1_BIT_STRING * | 152 | ASN1_BIT_STRING * |
