Fix misplaced initialisation.

If one of the calls to mpi_grow() before setting Apos would fail, then
mpi_free( &Apos ) would be executed without Apos being initialised.
This commit is contained in:
Manuel Pégourié-Gonnard 2014-01-18 19:05:23 +01:00 committed by Paul Bakker
parent 073f0fa2fb
commit fd6a191381

View File

@ -1527,6 +1527,7 @@ int mpi_exp_mod( mpi *X, const mpi *A, const mpi *E, const mpi *N, mpi *_RR )
*/ */
mpi_montg_init( &mm, N ); mpi_montg_init( &mm, N );
mpi_init( &RR ); mpi_init( &T ); mpi_init( &RR ); mpi_init( &T );
mpi_init( &Apos );
memset( W, 0, sizeof( W ) ); memset( W, 0, sizeof( W ) );
i = mpi_msb( E ); i = mpi_msb( E );
@ -1546,8 +1547,6 @@ int mpi_exp_mod( mpi *X, const mpi *A, const mpi *E, const mpi *N, mpi *_RR )
* Compensate for negative A (and correct at the end) * Compensate for negative A (and correct at the end)
*/ */
neg = ( A->s == -1 ); neg = ( A->s == -1 );
mpi_init( &Apos );
if( neg ) if( neg )
{ {
MPI_CHK( mpi_copy( &Apos, A ) ); MPI_CHK( mpi_copy( &Apos, A ) );