From 9e987edf9f060eb9180ef972a1c5fd49bca88612 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 20 Jan 2014 10:03:15 +0100 Subject: [PATCH] Fix potential memory leak in bignum selftest --- library/bignum.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/library/bignum.c b/library/bignum.c index 680c25a93..61b21fb68 100644 --- a/library/bignum.c +++ b/library/bignum.c @@ -2195,7 +2195,8 @@ int mpi_self_test( int verbose ) if( verbose != 0 ) printf( "failed\n" ); - return( 1 ); + ret = 1; + goto cleanup; } if( verbose != 0 ) @@ -2220,7 +2221,8 @@ int mpi_self_test( int verbose ) if( verbose != 0 ) printf( "failed\n" ); - return( 1 ); + ret = 1; + goto cleanup; } if( verbose != 0 ) @@ -2241,7 +2243,8 @@ int mpi_self_test( int verbose ) if( verbose != 0 ) printf( "failed\n" ); - return( 1 ); + ret = 1; + goto cleanup; } if( verbose != 0 ) @@ -2262,7 +2265,8 @@ int mpi_self_test( int verbose ) if( verbose != 0 ) printf( "failed\n" ); - return( 1 ); + ret = 1; + goto cleanup; } if( verbose != 0 ) @@ -2276,15 +2280,16 @@ int mpi_self_test( int verbose ) MPI_CHK( mpi_lset( &X, gcd_pairs[i][0] ) ); MPI_CHK( mpi_lset( &Y, gcd_pairs[i][1] ) ); - MPI_CHK( mpi_gcd( &A, &X, &Y ) ); + MPI_CHK( mpi_gcd( &A, &X, &Y ) ); - if( mpi_cmp_int( &A, gcd_pairs[i][2] ) != 0 ) - { - if( verbose != 0 ) - printf( "failed at %d\n", i ); + if( mpi_cmp_int( &A, gcd_pairs[i][2] ) != 0 ) + { + if( verbose != 0 ) + printf( "failed at %d\n", i ); - return( 1 ); - } + ret = 1; + goto cleanup; + } } if( verbose != 0 )