- 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/programs/pkey/mpi_demo.c b/programs/pkey/mpi_demo.c
index 008d334..b29f9a1 100644
--- a/programs/pkey/mpi_demo.c
+++ b/programs/pkey/mpi_demo.c
@@ -35,8 +35,9 @@
 {
     mpi E, P, Q, N, H, D, X, Y, Z;
 
-    mpi_init( &E, &P, &Q, &N, &H,
-              &D, &X, &Y, &Z, NULL );
+    mpi_init( &E ); mpi_init( &P ); mpi_init( &Q ); mpi_init( &N );
+    mpi_init( &H ); mpi_init( &D ); mpi_init( &X ); mpi_init( &Y );
+    mpi_init( &Z );
 
     mpi_read_string( &P, 10, "2789" );
     mpi_read_string( &Q, 10, "3203" );
@@ -69,8 +70,9 @@
     mpi_write_file( "  Z (decrypted)  = Y^D mod N = ", &Z, 10, NULL );
     printf( "\n" );
 
-    mpi_free( &Z, &Y, &X, &D, &H,
-              &N, &Q, &P, &E, NULL );
+    mpi_free( &E ); mpi_free( &P ); mpi_free( &Q ); mpi_free( &N );
+    mpi_free( &H ); mpi_free( &D ); mpi_free( &X ); mpi_free( &Y );
+    mpi_free( &Z );
 
 #ifdef WIN32
     printf( "  Press Enter to exit this program.\n" );