diff options
author | miod <> | 2014-10-05 18:28:56 +0000 |
---|---|---|
committer | miod <> | 2014-10-05 18:28:56 +0000 |
commit | ae9853e9b54a00e3b8ccbbfc08073482ae270049 (patch) | |
tree | 09d814e2756ec38bef091563e308ea0d57bb38df /src/lib | |
parent | 44741f98424ed014b15e9fa75544019440477522 (diff) | |
download | openbsd-ae9853e9b54a00e3b8ccbbfc08073482ae270049.tar.gz openbsd-ae9853e9b54a00e3b8ccbbfc08073482ae270049.tar.bz2 openbsd-ae9853e9b54a00e3b8ccbbfc08073482ae270049.zip |
In v2i_AUTHORITY_INFO_ACCESS(), separate object allocation from object push
on a stack; if the latter fails, we need to free the object before returning
failure.
ok guenther@
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/libcrypto/x509v3/v3_info.c | 11 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/x509v3/v3_info.c | 11 |
2 files changed, 16 insertions, 6 deletions
diff --git a/src/lib/libcrypto/x509v3/v3_info.c b/src/lib/libcrypto/x509v3/v3_info.c index 8e590ed808..862f949b1b 100644 --- a/src/lib/libcrypto/x509v3/v3_info.c +++ b/src/lib/libcrypto/x509v3/v3_info.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: v3_info.c,v 1.18 2014/07/11 08:44:49 jsing Exp $ */ | 1 | /* $OpenBSD: v3_info.c,v 1.19 2014/10/05 18:28:56 miod 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 | */ |
@@ -159,8 +159,13 @@ v2i_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, | |||
159 | } | 159 | } |
160 | for (i = 0; i < sk_CONF_VALUE_num(nval); i++) { | 160 | for (i = 0; i < sk_CONF_VALUE_num(nval); i++) { |
161 | cnf = sk_CONF_VALUE_value(nval, i); | 161 | cnf = sk_CONF_VALUE_value(nval, i); |
162 | if (!(acc = ACCESS_DESCRIPTION_new()) || | 162 | if ((acc = ACCESS_DESCRIPTION_new()) == NULL) { |
163 | !sk_ACCESS_DESCRIPTION_push(ainfo, acc)) { | 163 | X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS, |
164 | ERR_R_MALLOC_FAILURE); | ||
165 | goto err; | ||
166 | } | ||
167 | if (sk_ACCESS_DESCRIPTION_push(ainfo, acc) == 0) { | ||
168 | ACCESS_DESCRIPTION_free(acc); | ||
164 | X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS, | 169 | X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS, |
165 | ERR_R_MALLOC_FAILURE); | 170 | ERR_R_MALLOC_FAILURE); |
166 | goto err; | 171 | goto err; |
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_info.c b/src/lib/libssl/src/crypto/x509v3/v3_info.c index 8e590ed808..862f949b1b 100644 --- a/src/lib/libssl/src/crypto/x509v3/v3_info.c +++ b/src/lib/libssl/src/crypto/x509v3/v3_info.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: v3_info.c,v 1.18 2014/07/11 08:44:49 jsing Exp $ */ | 1 | /* $OpenBSD: v3_info.c,v 1.19 2014/10/05 18:28:56 miod 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 | */ |
@@ -159,8 +159,13 @@ v2i_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, | |||
159 | } | 159 | } |
160 | for (i = 0; i < sk_CONF_VALUE_num(nval); i++) { | 160 | for (i = 0; i < sk_CONF_VALUE_num(nval); i++) { |
161 | cnf = sk_CONF_VALUE_value(nval, i); | 161 | cnf = sk_CONF_VALUE_value(nval, i); |
162 | if (!(acc = ACCESS_DESCRIPTION_new()) || | 162 | if ((acc = ACCESS_DESCRIPTION_new()) == NULL) { |
163 | !sk_ACCESS_DESCRIPTION_push(ainfo, acc)) { | 163 | X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS, |
164 | ERR_R_MALLOC_FAILURE); | ||
165 | goto err; | ||
166 | } | ||
167 | if (sk_ACCESS_DESCRIPTION_push(ainfo, acc) == 0) { | ||
168 | ACCESS_DESCRIPTION_free(acc); | ||
164 | X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS, | 169 | X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS, |
165 | ERR_R_MALLOC_FAILURE); | 170 | ERR_R_MALLOC_FAILURE); |
166 | goto err; | 171 | goto err; |