summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortb <>2019-04-22 17:23:55 +0000
committertb <>2019-04-22 17:23:55 +0000
commit23beb8133d5c77469171fcbf6baa82999a899d86 (patch)
tree820346acfda5218140569d14f1738baf581c2f91 /src
parent130e1be827e364dd8e7850c456155b98c77c1915 (diff)
downloadopenbsd-23beb8133d5c77469171fcbf6baa82999a899d86.tar.gz
openbsd-23beb8133d5c77469171fcbf6baa82999a899d86.tar.bz2
openbsd-23beb8133d5c77469171fcbf6baa82999a899d86.zip
Add error checking to i2v_ASN1_BIT_STRING().
ok jsing
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/x509v3/v3_bitst.c22
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
138ASN1_BIT_STRING * 152ASN1_BIT_STRING *