From: Bernd Edlinger Date: Fri, 16 Aug 2019 13:18:51 +0000 (+0200) Subject: Fix error handling in X509_chain_up_ref X-Git-Tag: OpenSSL_1_1_1d~56 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=2403153c95b312e0a5a178c516335ee8dd17526c;p=oweals%2Fopenssl.git Fix error handling in X509_chain_up_ref Reviewed-by: Kurt Roeckx Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/9614) (cherry picked from commit cae665dfa6ccec743a7f39cf80676d7d2d787e56) --- diff --git a/crypto/x509/x509_cmp.c b/crypto/x509/x509_cmp.c index 02fad0c671..c65222df69 100644 --- a/crypto/x509/x509_cmp.c +++ b/crypto/x509/x509_cmp.c @@ -450,9 +450,17 @@ STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain) STACK_OF(X509) *ret; int i; ret = sk_X509_dup(chain); + if (ret == NULL) + return NULL; for (i = 0; i < sk_X509_num(ret); i++) { X509 *x = sk_X509_value(ret, i); - X509_up_ref(x); + if (!X509_up_ref(x)) + goto err; } return ret; + err: + while (i-- > 0) + X509_free (sk_X509_value(ret, i)); + sk_X509_free(ret); + return NULL; }