- Fill full buffer (Wrong parameter usage)
diff --git a/library/bignum.c b/library/bignum.c
index b221312..0cb9505 100644
--- a/library/bignum.c
+++ b/library/bignum.c
@@ -1813,7 +1813,7 @@
/*
* pick a random A, 1 < A < |X| - 1
*/
- MPI_CHK( mpi_fill_random( &A, X->n, f_rng, p_rng ) );
+ MPI_CHK( mpi_fill_random( &A, X->n * ciL, f_rng, p_rng ) );
if( mpi_cmp_mpi( &A, &W ) >= 0 )
{
@@ -1885,7 +1885,7 @@
n = BITS_TO_LIMBS( nbits );
- MPI_CHK( mpi_fill_random( X, n, f_rng, p_rng ) );
+ MPI_CHK( mpi_fill_random( X, n * ciL, f_rng, p_rng ) );
k = mpi_msb( X );
if( k < nbits ) MPI_CHK( mpi_shift_l( X, nbits - k ) );
diff --git a/library/dhm.c b/library/dhm.c
index f9cef5e..dcbebc2 100644
--- a/library/dhm.c
+++ b/library/dhm.c
@@ -124,16 +124,14 @@
int (*f_rng)(void *, unsigned char *, size_t),
void *p_rng )
{
- int ret, n;
+ int ret;
size_t n1, n2, n3;
unsigned char *p;
/*
* Generate X as large as possible ( < P )
*/
- n = x_size / sizeof( t_uint ) + 1;
-
- mpi_fill_random( &ctx->X, n, f_rng, p_rng );
+ mpi_fill_random( &ctx->X, x_size, f_rng, p_rng );
while( mpi_cmp_mpi( &ctx->X, &ctx->P ) >= 0 )
mpi_shift_r( &ctx->X, 1 );
@@ -201,7 +199,7 @@
int (*f_rng)(void *, unsigned char *, size_t),
void *p_rng )
{
- int ret, n;
+ int ret;
if( ctx == NULL || olen < 1 || olen > ctx->len )
return( POLARSSL_ERR_DHM_BAD_INPUT_DATA );
@@ -209,9 +207,7 @@
/*
* generate X and calculate GX = G^X mod P
*/
- n = x_size / sizeof( t_uint ) + 1;
-
- mpi_fill_random( &ctx->X, n, f_rng, p_rng );
+ mpi_fill_random( &ctx->X, x_size, f_rng, p_rng );
while( mpi_cmp_mpi( &ctx->X, &ctx->P ) >= 0 )
mpi_shift_r( &ctx->X, 1 );