From 74072ac84cc3a56b380d2a617c4c8529313312ce Mon Sep 17 00:00:00 2001 From: David Benjamin Date: Sun, 2 Nov 2014 16:02:45 -0500 Subject: [PATCH] Fix a2i_ASN1_* leak on failure. Caught by clang scan-build. Change-Id: I1097848052026361e24fd1202cc0c831c3f83e49 Reviewed-on: https://boringssl-review.googlesource.com/2201 Reviewed-by: Adam Langley --- crypto/asn1/f_enum.c | 3 ++- crypto/asn1/f_int.c | 3 ++- crypto/asn1/f_string.c | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/crypto/asn1/f_enum.c b/crypto/asn1/f_enum.c index 572582446..530afe57d 100644 --- a/crypto/asn1/f_enum.c +++ b/crypto/asn1/f_enum.c @@ -159,7 +159,6 @@ int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size) if (sp == NULL) { OPENSSL_PUT_ERROR(ASN1, a2i_ASN1_ENUMERATED, ERR_R_MALLOC_FAILURE); - if (s != NULL) OPENSSL_free(s); goto err; } s=sp; @@ -200,6 +199,8 @@ err: err_sl: OPENSSL_PUT_ERROR(ASN1, a2i_ASN1_ENUMERATED, ASN1_R_SHORT_LINE); } + if (s != NULL) + OPENSSL_free(s); return(ret); } diff --git a/crypto/asn1/f_int.c b/crypto/asn1/f_int.c index 7b8c61a9b..2c4fe6f20 100644 --- a/crypto/asn1/f_int.c +++ b/crypto/asn1/f_int.c @@ -163,7 +163,6 @@ int a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size) if (sp == NULL) { OPENSSL_PUT_ERROR(ASN1, a2i_ASN1_INTEGER, ERR_R_MALLOC_FAILURE); - if (s != NULL) OPENSSL_free(s); goto err; } s=sp; @@ -204,6 +203,8 @@ err: err_sl: OPENSSL_PUT_ERROR(ASN1, a2i_ASN1_INTEGER, ASN1_R_SHORT_LINE); } + if (s != NULL) + OPENSSL_free(s); return(ret); } diff --git a/crypto/asn1/f_string.c b/crypto/asn1/f_string.c index d6f128dd0..2f5367083 100644 --- a/crypto/asn1/f_string.c +++ b/crypto/asn1/f_string.c @@ -157,7 +157,6 @@ int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size) if (sp == NULL) { OPENSSL_PUT_ERROR(ASN1, a2i_ASN1_STRING, ERR_R_MALLOC_FAILURE); - if (s != NULL) OPENSSL_free(s); goto err; } s=sp; @@ -198,6 +197,8 @@ err: err_sl: OPENSSL_PUT_ERROR(ASN1, a2i_ASN1_STRING, ASN1_R_SHORT_LINE); } + if (s != NULL) + OPENSSL_free(s); return(ret); }