From: David Sommerseth Date: Sat, 4 Feb 2012 13:51:54 +0000 (+0100) Subject: Enhance the error handling in _openssl_get_subject() X-Git-Tag: v2.3-alpha1~28 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1951b415ed37187c26997f3fe1eb4c59e8dbf298;p=thirdparty%2Fopenvpn.git Enhance the error handling in _openssl_get_subject() Avoid an extra goto label and make the code a bit simpler. Signed-off-by: David Sommerseth Acked-by: Heiko Hund Acked-by: Adriaan de Jong --- diff --git a/ssl_verify_openssl.c b/ssl_verify_openssl.c index e3f2d13fd..b2c01a32e 100644 --- a/ssl_verify_openssl.c +++ b/ssl_verify_openssl.c @@ -249,21 +249,21 @@ x509_free_sha1_hash (unsigned char *hash) char * _openssl_get_subject (X509 *cert, char *buf, int size) { - BIO *subject_bio; + BIO *subject_bio = NULL; BUF_MEM *subject_mem; char *subject = buf; int maxlen = size; subject_bio = BIO_new (BIO_s_mem ()); if (subject_bio == NULL) - goto out; + goto err; X509_NAME_print_ex (subject_bio, X509_get_subject_name (cert), 0, XN_FLAG_SEP_CPLUS_SPC | XN_FLAG_FN_SN | ASN1_STRFLGS_UTF8_CONVERT | ASN1_STRFLGS_ESC_CTRL); if (BIO_eof (subject_bio)) - goto out_free; + goto err; BIO_get_mem_ptr (subject_bio, &subject_mem); if (subject == NULL) @@ -276,9 +276,10 @@ _openssl_get_subject (X509 *cert, char *buf, int size) memcpy (subject, subject_mem->data, maxlen); subject[maxlen - 1] = '\0'; -out_free: - BIO_free (subject_bio); -out: +err: + if (subject_bio) + BIO_free (subject_bio); + return subject; }