- mpi_init() and mpi_free() only accept a single argument and do not accept variable arguments anymore. This prevents unexpected memory corruption in a number of use cases.

diff --git a/tests/suites/test_suite_debug.function b/tests/suites/test_suite_debug.function
index 4efa1e9..0172de6 100644
--- a/tests/suites/test_suite_debug.function
+++ b/tests/suites/test_suite_debug.function
@@ -45,7 +45,7 @@
     struct buffer_data buffer;
     mpi val;
 
-    mpi_init( &val, NULL );
+    mpi_init( &val );
 
     memset( &ssl, 0, sizeof( ssl_context ) );
     memset( buffer.buf, 0, 2000 );
@@ -57,6 +57,8 @@
     debug_print_mpi( &ssl, 0, {file}, {line}, {prefix}, &val);
 
     TEST_ASSERT( strcmp( buffer.buf, {result_str} ) == 0 );
+
+    mpi_free( &val );
 }
 END_CASE
 
diff --git a/tests/suites/test_suite_mpi.function b/tests/suites/test_suite_mpi.function
index 7755ab2..c31589e 100644
--- a/tests/suites/test_suite_mpi.function
+++ b/tests/suites/test_suite_mpi.function
@@ -18,7 +18,7 @@
     char str[1000];
     size_t len = {output_size};
 
-    mpi_init(&X, NULL);
+    mpi_init( &X );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == {result_read} );
     if( {result_read} == 0 )
@@ -29,6 +29,8 @@
             TEST_ASSERT( strcasecmp( str, {input_A} ) == 0 );
         }
     }
+
+    mpi_free( &X );
 }
 END_CASE
 
@@ -41,13 +43,15 @@
     size_t len = 1000;
     size_t input_len;
 
-    mpi_init(&X, NULL);
+    mpi_init( &X );
 
     input_len = unhexify( buf, {input_X} );
 
     TEST_ASSERT( mpi_read_binary( &X, buf, input_len ) == 0 );
     TEST_ASSERT( mpi_write_string( &X, {radix_A}, (char *) str, &len ) == 0 );
     TEST_ASSERT( strcmp( (char *) str, {input_A} ) == 0 );
+
+    mpi_free( &X );
 }
 END_CASE
 
@@ -62,7 +66,7 @@
     memset( buf, 0x00, 1000 );
     memset( str, 0x00, 1000 );
 
-    mpi_init(&X, NULL);
+    mpi_init( &X );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     
@@ -77,6 +81,8 @@
 
         TEST_ASSERT( strcasecmp( (char *) str, {input_A} ) == 0 );
     }
+
+    mpi_free( &X );
 }
 END_CASE
 
@@ -92,7 +98,7 @@
     memset( buf, 0x00, 1000 );
     memset( str, 0x00, 1000 );
 
-    mpi_init(&X, NULL);
+    mpi_init( &X );
 
     file = fopen( {input_file}, "r" );
     TEST_ASSERT( mpi_read_file( &X, {radix_X}, file ) == {result} );
@@ -107,6 +113,8 @@
 
         TEST_ASSERT( strcasecmp( (char *) str, {input_A} ) == 0 );
     }
+
+    mpi_free( &X );
 }
 END_CASE
 
@@ -116,7 +124,7 @@
     mpi X, Y;
     FILE *file_out, *file_in;
 
-    mpi_init( &X, &Y, NULL );
+    mpi_init( &X ); mpi_init( &Y );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
 
@@ -129,6 +137,8 @@
     fclose(file_in);
 
     TEST_ASSERT( mpi_cmp_mpi( &X, &Y ) == 0 );
+
+    mpi_free( &X ); mpi_free( &Y );
 }
 END_CASE
 
@@ -136,10 +146,12 @@
 mpi_lsb:radix_X:input_X:nr_bits
 {
     mpi X;
-    mpi_init(&X, NULL);
+    mpi_init( &X );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_lsb( &X ) == {nr_bits} );
+
+    mpi_free( &X );
 }
 END_CASE
 
@@ -147,10 +159,12 @@
 mpi_msb:radix_X:input_X:nr_bits
 {
     mpi X;
-    mpi_init(&X, NULL);
+    mpi_init( &X );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_msb( &X ) == {nr_bits} );
+
+    mpi_free( &X );
 }
 END_CASE
 
@@ -158,13 +172,15 @@
 mpi_gcd:radix_X:input_X:radix_Y:input_Y:radix_A:input_A
 {
     mpi A, X, Y, Z;
-    mpi_init(&A, &X, &Y, &Z, NULL);
+    mpi_init( &A ); mpi_init( &X ); mpi_init( &Y ); mpi_init( &Z );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &Y, {radix_Y}, {input_Y} ) == 0 );
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
     TEST_ASSERT( mpi_gcd( &Z, &X, &Y ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &Z, &A ) == 0 );
+
+    mpi_free( &A ); mpi_free( &X ); mpi_free( &Y ); mpi_free( &Z );
 }
 END_CASE
 
@@ -172,10 +188,12 @@
 mpi_cmp_int:input_X:input_A:result_CMP
 {
     mpi X;
-    mpi_init(&X, NULL);
+    mpi_init( &X  );
 
     TEST_ASSERT( mpi_lset( &X, {input_X} ) == 0);
     TEST_ASSERT( mpi_cmp_int( &X, {input_A} ) == {result_CMP});
+
+    mpi_free( &X );
 }
 END_CASE
 
@@ -183,11 +201,13 @@
 mpi_cmp_mpi:radix_X:input_X:radix_Y:input_Y:input_A
 {
     mpi X, Y;
-    mpi_init(&X, &Y, NULL);
+    mpi_init( &X ); mpi_init( &Y );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &Y, {radix_Y}, {input_Y} ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &X, &Y ) == {input_A} );
+
+    mpi_free( &X ); mpi_free( &Y );
 }
 END_CASE
 
@@ -195,11 +215,13 @@
 mpi_cmp_abs:radix_X:input_X:radix_Y:input_Y:input_A
 {
     mpi X, Y;
-    mpi_init(&X, &Y, NULL);
+    mpi_init( &X ); mpi_init( &Y );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &Y, {radix_Y}, {input_Y} ) == 0 );
     TEST_ASSERT( mpi_cmp_abs( &X, &Y ) == {input_A} );
+
+    mpi_free( &X ); mpi_free( &Y );
 }
 END_CASE
 
@@ -207,7 +229,7 @@
 mpi_copy:input_X:input_A
 {
     mpi X, Y, A;
-    mpi_init(&X, &Y, &A, NULL);
+    mpi_init( &X ); mpi_init( &Y ); mpi_init( &A );
 
     TEST_ASSERT( mpi_lset( &X, {input_X} ) == 0 );
     TEST_ASSERT( mpi_lset( &Y, {input_A} ) == 0 );
@@ -217,6 +239,8 @@
     TEST_ASSERT( mpi_copy( &Y, &X ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &X, &Y ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &Y, &A ) != 0 );
+
+    mpi_free( &X ); mpi_free( &Y ); mpi_free( &A );
 }
 END_CASE
 
@@ -224,11 +248,13 @@
 mpi_copy_self:input_X
 {
     mpi X;
-    mpi_init(&X, NULL);
+    mpi_init( &X );
 
     TEST_ASSERT( mpi_lset( &X, {input_X} ) == 0 );
     TEST_ASSERT( mpi_copy( &X, &X ) == 0 );
     TEST_ASSERT( mpi_cmp_int( &X, {input_X} ) == 0 );
+
+    mpi_free( &X );
 }
 END_CASE
 
@@ -236,7 +262,7 @@
 mpi_swap:input_X:input_Y
 {
     mpi X, Y, A;
-    mpi_init(&X, &Y, &A, NULL);
+    mpi_init( &X ); mpi_init( &Y ); mpi_init( &A );
 
     TEST_ASSERT( mpi_lset( &X, {input_X} ) == 0 );
     TEST_ASSERT( mpi_lset( &Y, {input_Y} ) == 0 );
@@ -246,6 +272,8 @@
     mpi_swap( &X, &Y );
     TEST_ASSERT( mpi_cmp_mpi( &X, &Y ) != 0 );
     TEST_ASSERT( mpi_cmp_mpi( &Y, &A ) == 0 );
+
+    mpi_free( &X ); mpi_free( &Y ); mpi_free( &A );
 }
 END_CASE
 
@@ -253,13 +281,15 @@
 mpi_add_mpi:radix_X:input_X:radix_Y:input_Y:radix_A:input_A
 {
     mpi X, Y, Z, A;
-    mpi_init(&X, &Y, &Z, &A, NULL);
+    mpi_init( &X ); mpi_init( &Y ); mpi_init( &Z ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &Y, {radix_Y}, {input_Y} ) == 0 );
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
     TEST_ASSERT( mpi_add_mpi( &Z, &X, &Y ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &Z, &A ) == 0 );
+
+    mpi_free( &X ); mpi_free( &Y ); mpi_free( &Z ); mpi_free( &A );
 }
 END_CASE
 
@@ -267,13 +297,15 @@
 mpi_add_abs:radix_X:input_X:radix_Y:input_Y:radix_A:input_A
 {
     mpi X, Y, Z, A;
-    mpi_init(&X, &Y, &Z, &A, NULL);
+    mpi_init( &X ); mpi_init( &Y ); mpi_init( &Z ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &Y, {radix_Y}, {input_Y} ) == 0 );
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
     TEST_ASSERT( mpi_add_abs( &Z, &X, &Y ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &Z, &A ) == 0 );
+
+    mpi_free( &X ); mpi_free( &Y ); mpi_free( &Z ); mpi_free( &A );
 }
 END_CASE
 
@@ -281,13 +313,15 @@
 mpi_add_abs_add_first:radix_X:input_X:radix_Y:input_Y:radix_A:input_A
 {
     mpi X, Y, A;
-    mpi_init(&X, &Y, &A, NULL);
+    mpi_init( &X ); mpi_init( &Y ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &Y, {radix_Y}, {input_Y} ) == 0 );
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
     TEST_ASSERT( mpi_add_abs( &X, &X, &Y ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &X, &A ) == 0 );
+
+    mpi_free( &X ); mpi_free( &Y ); mpi_free( &A );
 }
 END_CASE
 
@@ -295,13 +329,15 @@
 mpi_add_abs_add_second:radix_X:input_X:radix_Y:input_Y:radix_A:input_A
 {
     mpi X, Y, A;
-    mpi_init(&X, &Y, &A, NULL);
+    mpi_init( &X ); mpi_init( &Y ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &Y, {radix_Y}, {input_Y} ) == 0 );
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
     TEST_ASSERT( mpi_add_abs( &Y, &X, &Y ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &Y, &A ) == 0 );
+
+    mpi_free( &X ); mpi_free( &Y ); mpi_free( &A );
 }
 END_CASE
 
@@ -309,12 +345,14 @@
 mpi_add_int:radix_X:input_X:input_Y:radix_A:input_A
 {
     mpi X, Z, A;
-    mpi_init(&X, &Z, &A, NULL);
+    mpi_init( &X ); mpi_init( &Z ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
     TEST_ASSERT( mpi_add_int( &Z, &X, {input_Y} ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &Z, &A ) == 0 );
+
+    mpi_free( &X ); mpi_free( &Z ); mpi_free( &A );
 }
 END_CASE
 
@@ -322,13 +360,15 @@
 mpi_sub_mpi:radix_X:input_X:radix_Y:input_Y:radix_A:input_A
 {
     mpi X, Y, Z, A;
-    mpi_init(&X, &Y, &Z, &A, NULL);
+    mpi_init( &X ); mpi_init( &Y ); mpi_init( &Z ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &Y, {radix_Y}, {input_Y} ) == 0 );
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
     TEST_ASSERT( mpi_sub_mpi( &Z, &X, &Y ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &Z, &A ) == 0 );
+
+    mpi_free( &X ); mpi_free( &Y ); mpi_free( &Z ); mpi_free( &A );
 }
 END_CASE
 
@@ -337,7 +377,7 @@
 {
     mpi X, Y, Z, A;
     int res;
-    mpi_init(&X, &Y, &Z, &A, NULL);
+    mpi_init( &X ); mpi_init( &Y ); mpi_init( &Z ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &Y, {radix_Y}, {input_Y} ) == 0 );
@@ -347,6 +387,8 @@
     TEST_ASSERT( res == {sub_result} );
     if( res == 0 )
         TEST_ASSERT( mpi_cmp_mpi( &Z, &A ) == 0 );
+
+    mpi_free( &X ); mpi_free( &Y ); mpi_free( &Z ); mpi_free( &A );
 }
 END_CASE
 
@@ -354,12 +396,14 @@
 mpi_sub_int:radix_X:input_X:input_Y:radix_A:input_A
 {
     mpi X, Z, A;
-    mpi_init(&X, &Z, &A, NULL);
+    mpi_init( &X ); mpi_init( &Z ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
     TEST_ASSERT( mpi_sub_int( &Z, &X, {input_Y} ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &Z, &A ) == 0 );
+
+    mpi_free( &X ); mpi_free( &Z ); mpi_free( &A );
 }
 END_CASE
 
@@ -367,13 +411,15 @@
 mpi_mul_mpi:radix_X:input_X:radix_Y:input_Y:radix_A:input_A
 {
     mpi X, Y, Z, A;
-    mpi_init(&X, &Y, &Z, &A, NULL);
+    mpi_init( &X ); mpi_init( &Y ); mpi_init( &Z ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &Y, {radix_Y}, {input_Y} ) == 0 );
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
     TEST_ASSERT( mpi_mul_mpi( &Z, &X, &Y ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &Z, &A ) == 0 );
+
+    mpi_free( &X ); mpi_free( &Y ); mpi_free( &Z ); mpi_free( &A );
 }
 END_CASE
 
@@ -381,12 +427,14 @@
 mpi_mul_int:radix_X:input_X:input_Y:radix_A:input_A:result_comparison
 {
     mpi X, Z, A;
-    mpi_init(&X, &Z, &A, NULL);
+    mpi_init( &X ); mpi_init( &Z ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
     TEST_ASSERT( mpi_mul_int( &Z, &X, {input_Y} ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &Z, &A ) {result_comparison} 0 );
+
+    mpi_free( &X ); mpi_free( &Z ); mpi_free( &A );
 }
 END_CASE
 
@@ -395,7 +443,8 @@
 {
     mpi X, Y, Q, R, A, B;
     int res;
-    mpi_init(&X, &Y, &Q, &R, &A, &B, NULL);
+    mpi_init( &X ); mpi_init( &Y ); mpi_init( &Q ); mpi_init( &R );
+    mpi_init( &A ); mpi_init( &B );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &Y, {radix_Y}, {input_Y} ) == 0 );
@@ -408,6 +457,9 @@
         TEST_ASSERT( mpi_cmp_mpi( &Q, &A ) == 0 );
         TEST_ASSERT( mpi_cmp_mpi( &R, &B ) == 0 );
     }
+
+    mpi_free( &X ); mpi_free( &Y ); mpi_free( &Q ); mpi_free( &R );
+    mpi_free( &A ); mpi_free( &B );
 }
 END_CASE
 
@@ -416,7 +468,8 @@
 {
     mpi X, Q, R, A, B;
     int res;
-    mpi_init(&X, &Q, &R, &A, &B, NULL);
+    mpi_init( &X ); mpi_init( &Q ); mpi_init( &R ); mpi_init( &A );
+    mpi_init( &B );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
@@ -428,6 +481,9 @@
         TEST_ASSERT( mpi_cmp_mpi( &Q, &A ) == 0 );
         TEST_ASSERT( mpi_cmp_mpi( &R, &B ) == 0 );
     }
+
+    mpi_free( &X ); mpi_free( &Q ); mpi_free( &R ); mpi_free( &A );
+    mpi_free( &B );
 }
 END_CASE
 
@@ -436,7 +492,7 @@
 {
     mpi X, Y, Z, A;
     int res;
-    mpi_init(&X, &Y, &Z, &A, NULL);
+    mpi_init( &X ); mpi_init( &Y ); mpi_init( &Z ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &Y, {radix_Y}, {input_Y} ) == 0 );
@@ -447,6 +503,8 @@
     {
         TEST_ASSERT( mpi_cmp_mpi( &Z, &A ) == 0 );
     }
+
+    mpi_free( &X ); mpi_free( &Y ); mpi_free( &Z ); mpi_free( &A );
 }
 END_CASE
 
@@ -456,7 +514,7 @@
     mpi X;
     int res;
     t_uint r;
-    mpi_init(&X, NULL);
+    mpi_init( &X );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     res = mpi_mod_int( &r, &X, {input_Y} );
@@ -465,6 +523,8 @@
     {
         TEST_ASSERT( r == {input_A} );
     }
+
+    mpi_free( &X );
 }
 END_CASE
 
@@ -473,7 +533,8 @@
 {
     mpi A, E, N, RR, Z, X;
     int res;
-    mpi_init(&A, &E, &N, &RR, &Z, &X, NULL);
+    mpi_init( &A  ); mpi_init( &E ); mpi_init( &N );
+    mpi_init( &RR ); mpi_init( &Z ); mpi_init( &X );
 
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
     TEST_ASSERT( mpi_read_string( &E, {radix_E}, {input_E} ) == 0 );
@@ -489,6 +550,9 @@
     {
         TEST_ASSERT( mpi_cmp_mpi( &Z, &X ) == 0 );
     }
+
+    mpi_free( &A  ); mpi_free( &E ); mpi_free( &N );
+    mpi_free( &RR ); mpi_free( &Z ); mpi_free( &X );
 }
 END_CASE
 
@@ -497,7 +561,7 @@
 {
     mpi X, Y, Z, A;
     int res;
-    mpi_init(&X, &Y, &Z, &A, NULL);
+    mpi_init( &X ); mpi_init( &Y ); mpi_init( &Z ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &Y, {radix_Y}, {input_Y} ) == 0 );
@@ -508,6 +572,8 @@
     {
         TEST_ASSERT( mpi_cmp_mpi( &Z, &A ) == 0 );
     }
+
+    mpi_free( &X ); mpi_free( &Y ); mpi_free( &Z ); mpi_free( &A );
 }
 END_CASE
 
@@ -516,11 +582,13 @@
 {
     mpi X;
     int res;
-    mpi_init(&X, NULL);
+    mpi_init( &X );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     res = mpi_is_prime( &X, myrand, NULL );
     TEST_ASSERT( res == {div_result} );
+
+    mpi_free( &X );
 }
 END_CASE
 
@@ -528,12 +596,14 @@
 mpi_shift_l:radix_X:input_X:shift_X:radix_A:input_A
 {
     mpi X, A;
-    mpi_init(&X, &A, NULL);
+    mpi_init( &X ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
     TEST_ASSERT( mpi_shift_l( &X, {shift_X} ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &X, &A ) == 0 );
+
+    mpi_free( &X ); mpi_free( &A );
 }
 END_CASE
 
@@ -541,12 +611,14 @@
 mpi_shift_r:radix_X:input_X:shift_X:radix_A:input_A
 {
     mpi X, A;
-    mpi_init(&X, &A, NULL);
+    mpi_init( &X ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
     TEST_ASSERT( mpi_shift_r( &X, {shift_X} ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &X, &A ) == 0 );
+
+    mpi_free( &X ); mpi_free( &A );
 }
 END_CASE
 
diff --git a/tests/suites/test_suite_pkcs1_v21.function b/tests/suites/test_suite_pkcs1_v21.function
index aa85f75..53b97b2 100644
--- a/tests/suites/test_suite_pkcs1_v21.function
+++ b/tests/suites/test_suite_pkcs1_v21.function
@@ -58,7 +58,7 @@
     size_t output_len;
     size_t msg_len;
 
-    mpi_init( &P1, &Q1, &H, &G, NULL );
+    mpi_init( &P1 ); mpi_init( &Q1 ); mpi_init( &H ); mpi_init( &G );
     rsa_init( &ctx, RSA_PKCS_V21, {hash} );
 
     memset( message_str, 0x00, 1000 );
@@ -91,6 +91,8 @@
 
         TEST_ASSERT( strncasecmp( (char *) output_str, {result_hex_str}, strlen( {result_hex_str} ) ) == 0 );
     }
+
+    mpi_free( &P1 ); mpi_free( &Q1 ); mpi_free( &H ); mpi_free( &G );
 }
 END_CASE
 
@@ -111,7 +113,7 @@
     info.buf = rnd_buf;
     info.per_call = 1;
 
-    mpi_init( &P1, &Q1, &H, &G, NULL );
+    mpi_init( &P1 ); mpi_init( &Q1 ); mpi_init( &H ); mpi_init( &G );
     rsa_init( &ctx, RSA_PKCS_V21, {hash} );
 
     memset( message_str, 0x00, 1000 );
@@ -185,6 +187,8 @@
 
         TEST_ASSERT( strcasecmp( (char *) output_str, {result_hex_str} ) == 0 );
     }
+
+    mpi_free( &P1 ); mpi_free( &Q1 ); mpi_free( &H ); mpi_free( &G );
 }
 END_CASE
 
diff --git a/tests/suites/test_suite_rsa.function b/tests/suites/test_suite_rsa.function
index 832b5d9..2ac03b8 100644
--- a/tests/suites/test_suite_rsa.function
+++ b/tests/suites/test_suite_rsa.function
@@ -28,7 +28,7 @@
     mpi P1, Q1, H, G;
     int msg_len;
 
-    mpi_init( &P1, &Q1, &H, &G, NULL );
+    mpi_init( &P1 ); mpi_init( &Q1 ); mpi_init( &H ); mpi_init( &G );
     rsa_init( &ctx, {padding_mode}, 0 );
 
     memset( message_str, 0x00, 1000 );
@@ -102,6 +102,8 @@
 
         TEST_ASSERT( strcasecmp( (char *) output_str, {result_hex_str} ) == 0 );
     }
+
+    mpi_free( &P1 ); mpi_free( &Q1 ); mpi_free( &H ); mpi_free( &G );
 }
 END_CASE
 
@@ -184,7 +186,7 @@
     mpi P1, Q1, H, G;
     int msg_len, hash_len;
 
-    mpi_init( &P1, &Q1, &H, &G, NULL );
+    mpi_init( &P1 ); mpi_init( &Q1 ); mpi_init( &H ); mpi_init( &G );
     rsa_init( &ctx, {padding_mode}, 0 );
 
     memset( message_str, 0x00, 1000 );
@@ -217,6 +219,8 @@
     hexify( output_str, output, ctx.len );
 
     TEST_ASSERT( strcasecmp( (char *) output_str, {result_hex_str} ) == 0 );
+
+    mpi_free( &P1 ); mpi_free( &Q1 ); mpi_free( &H ); mpi_free( &G );
 }
 END_CASE
 
@@ -325,7 +329,7 @@
     mpi P1, Q1, H, G;
     size_t output_len;
 
-    mpi_init( &P1, &Q1, &H, &G, NULL );
+    mpi_init( &P1 ); mpi_init( &Q1 ); mpi_init( &H ); mpi_init( &G );
     rsa_init( &ctx, {padding_mode}, 0 );
 
     memset( message_str, 0x00, 1000 );
@@ -359,6 +363,8 @@
 
         TEST_ASSERT( strncasecmp( (char *) output_str, {result_hex_str}, strlen( {result_hex_str} ) ) == 0 );
     }
+
+    mpi_free( &P1 ); mpi_free( &Q1 ); mpi_free( &H ); mpi_free( &G );
 }
 END_CASE
 
@@ -402,7 +408,7 @@
     rsa_context ctx;
     mpi P1, Q1, H, G;
 
-    mpi_init( &P1, &Q1, &H, &G, NULL );
+    mpi_init( &P1 ); mpi_init( &Q1 ); mpi_init( &H ); mpi_init( &G );
     rsa_init( &ctx, RSA_PKCS_V15, 0 );
 
     memset( message_str, 0x00, 1000 );
@@ -435,6 +441,8 @@
 
         TEST_ASSERT( strcasecmp( (char *) output_str, {result_hex_str} ) == 0 );
     }
+
+    mpi_free( &P1 ); mpi_free( &Q1 ); mpi_free( &H ); mpi_free( &G );
 }
 END_CASE