ECDH: Fix memory leaks due to context re-initialization
diff --git a/library/ecdh.c b/library/ecdh.c
index f1609bd..9c4ddce 100644
--- a/library/ecdh.c
+++ b/library/ecdh.c
@@ -162,6 +162,12 @@
 
 static void ecdh_init_internal( mbedtls_ecdh_context_mbed *ctx )
 {
+    mbedtls_ecp_group_free( &ctx->grp );
+    mbedtls_mpi_free( &ctx->d  );
+    mbedtls_ecp_point_free( &ctx->Q   );
+    mbedtls_ecp_point_free( &ctx->Qp  );
+    mbedtls_mpi_free( &ctx->z  );
+
     mbedtls_ecp_group_init( &ctx->grp );
     mbedtls_mpi_init( &ctx->d  );
     mbedtls_ecp_point_init( &ctx->Q   );
@@ -169,6 +175,7 @@
     mbedtls_mpi_init( &ctx->z  );
 
 #if defined(MBEDTLS_ECP_RESTARTABLE)
+    mbedtls_ecp_restart_free( &ctx->rs );
     mbedtls_ecp_restart_init( &ctx->rs );
 #endif
 }