Add dhm_init()
diff --git a/library/dhm.c b/library/dhm.c
index 5a87e3c..1b1d6d6 100644
--- a/library/dhm.c
+++ b/library/dhm.c
@@ -116,6 +116,11 @@
return( ret );
}
+void dhm_init( dhm_context *ctx )
+{
+ memset( ctx, 0, sizeof( dhm_context ) );
+}
+
/*
* Parse the ServerKeyExchange parameters
*/
@@ -125,8 +130,6 @@
{
int ret;
- dhm_free( ctx );
-
if( ( ret = dhm_read_bignum( &ctx->P, p, end ) ) != 0 ||
( ret = dhm_read_bignum( &ctx->G, p, end ) ) != 0 ||
( ret = dhm_read_bignum( &ctx->GY, p, end ) ) != 0 )
@@ -417,7 +420,6 @@
pem_context pem;
pem_init( &pem );
- memset( dhm, 0, sizeof( dhm_context ) );
ret = pem_read_buffer( &pem,
"-----BEGIN DH PARAMETERS-----",
@@ -561,6 +563,8 @@
int ret;
dhm_context dhm;
+ dhm_init( &dhm );
+
if( verbose != 0 )
polarssl_printf( " DHM parameter load: " );
@@ -570,15 +574,16 @@
if( verbose != 0 )
polarssl_printf( "failed\n" );
- return( ret );
+ goto exit;
}
if( verbose != 0 )
polarssl_printf( "passed\n\n" );
+exit:
dhm_free( &dhm );
- return( 0 );
+ return( ret );
#else
if( verbose != 0 )
polarssl_printf( " DHM parameter load: skipped\n" );