The branch master has been updated via d65d2963839433bb4f15525df37d0f4f799466e5 (commit) from 0c7ec1d2c3a47235ed1e5f9c65769955a41b8b26 (commit)
- Log ----------------------------------------------------------------- commit d65d2963839433bb4f15525df37d0f4f799466e5 Author: Pauli <pa...@openssl.org> Date: Mon Jun 21 10:33:10 2021 +1000 asn1: properly clean up on failed BIO creation Fixes coverity 1486070 through 1486077 and 1486079 Reviewed-by: Shane Lontis <shane.lon...@oracle.com> Reviewed-by: Tomas Mraz <to...@openssl.org> (Merged from https://github.com/openssl/openssl/pull/15841) ----------------------------------------------------------------------- Summary of changes: crypto/asn1/asn1_parse.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/crypto/asn1/asn1_parse.c b/crypto/asn1/asn1_parse.c index a131713d73..04d7ef66cf 100644 --- a/crypto/asn1/asn1_parse.c +++ b/crypto/asn1/asn1_parse.c @@ -27,6 +27,7 @@ static int asn1_print_info(BIO *bp, long offset, int depth, int hl, long len, int pop_f_prefix = 0; long saved_indent = -1; int i = 0; + BIO *bio = NULL; if (constructed & V_ASN1_CONSTRUCTED) p = "cons: "; @@ -43,7 +44,8 @@ static int asn1_print_info(BIO *bp, long offset, int depth, int hl, long len, } if (bp != NULL) { if (BIO_set_prefix(bp, str) <= 0) { - if ((bp = BIO_push(BIO_new(BIO_f_prefix()), bp)) == NULL) + if ((bio = BIO_new(BIO_f_prefix())) == NULL + || (bp = BIO_push(bio, bp)) == NULL) goto err; pop_f_prefix = 1; } @@ -72,10 +74,9 @@ static int asn1_print_info(BIO *bp, long offset, int depth, int hl, long len, err: if (saved_indent >= 0) BIO_set_indent(bp, saved_indent); - if (pop_f_prefix) { + if (pop_f_prefix) BIO_pop(bp); - BIO_free(bp); - } + BIO_free(bio); return i; }