From 5811d3e4ef98a0854a3796e8b50659545137ce0e Mon Sep 17 00:00:00 2001 From: Mansour Moufid Date: Tue, 17 Feb 2015 13:51:16 -0500 Subject: [PATCH] Fix another potential memory leak found by find-mem-leak.cocci. --- programs/ssl/ssl_server2.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index a98eff8ab..39420d53a 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -419,13 +419,13 @@ sni_entry *sni_parse( char *sni_string ) while( p <= end ) { if( ( new = polarssl_malloc( sizeof( sni_entry ) ) ) == NULL ) - return( NULL ); + goto error; memset( new, 0, sizeof( sni_entry ) ); if( ( new->cert = polarssl_malloc( sizeof( x509_crt ) ) ) == NULL || ( new->key = polarssl_malloc( sizeof( pk_context ) ) ) == NULL ) - return( NULL ); + goto error; x509_crt_init( new->cert ); pk_init( new->key ); @@ -436,13 +436,17 @@ sni_entry *sni_parse( char *sni_string ) if( x509_crt_parse_file( new->cert, crt_file ) != 0 || pk_parse_keyfile( new->key, key_file, "" ) != 0 ) - return( NULL ); + goto error; new->next = cur; cur = new; } return( cur ); + +error: + sni_free( new ); + return( NULL ); } void sni_free( sni_entry *head )