Introduce polarssl_zeroize() instead of memset() for zeroization
diff --git a/library/dhm.c b/library/dhm.c
index 41c573d..362cd1d 100644
--- a/library/dhm.c
+++ b/library/dhm.c
@@ -55,6 +55,11 @@
#define polarssl_free free
#endif
+/* Implementation that should never be optimized out by the compiler */
+static void polarssl_zeroize( void *v, size_t n ) {
+ volatile unsigned char *p = v; while( n-- ) *p++ = 0;
+}
+
/*
* helper to validate the mpi size and import it
*/
@@ -395,7 +400,7 @@
mpi_free( &ctx->GX ); mpi_free( &ctx->X ); mpi_free( &ctx->G );
mpi_free( &ctx->P );
- memset( ctx, 0, sizeof( dhm_context ) );
+ polarssl_zeroize( ctx, sizeof( dhm_context ) );
}
#if defined(POLARSSL_ASN1_PARSE_C)
@@ -535,7 +540,7 @@
ret = dhm_parse_dhm( dhm, buf, n );
- memset( buf, 0, n + 1 );
+ polarssl_zeroize( buf, n + 1 );
polarssl_free( buf );
return( ret );