diff options
Diffstat (limited to 'lib/mpi/mpi-pow.c')
| -rw-r--r-- | lib/mpi/mpi-pow.c | 6 | 
1 files changed, 2 insertions, 4 deletions
| diff --git a/lib/mpi/mpi-pow.c b/lib/mpi/mpi-pow.c index 82b19e4f1189..2fd7a46d55ec 100644 --- a/lib/mpi/mpi-pow.c +++ b/lib/mpi/mpi-pow.c @@ -24,6 +24,7 @@  int mpi_powm(MPI res, MPI base, MPI exp, MPI mod)  {  	mpi_ptr_t mp_marker = NULL, bp_marker = NULL, ep_marker = NULL; +	struct karatsuba_ctx karactx = {};  	mpi_ptr_t xp_marker = NULL;  	mpi_ptr_t tspace = NULL;  	mpi_ptr_t rp, ep, mp, bp; @@ -150,13 +151,11 @@ int mpi_powm(MPI res, MPI base, MPI exp, MPI mod)  		int c;  		mpi_limb_t e;  		mpi_limb_t carry_limb; -		struct karatsuba_ctx karactx;  		xp = xp_marker = mpi_alloc_limb_space(2 * (msize + 1));  		if (!xp)  			goto enomem; -		memset(&karactx, 0, sizeof karactx);  		negative_result = (ep[0] & 1) && base->sign;  		i = esize - 1; @@ -281,8 +280,6 @@ int mpi_powm(MPI res, MPI base, MPI exp, MPI mod)  		if (mod_shift_cnt)  			mpihelp_rshift(rp, rp, rsize, mod_shift_cnt);  		MPN_NORMALIZE(rp, rsize); - -		mpihelp_release_karatsuba_ctx(&karactx);  	}  	if (negative_result && rsize) { @@ -299,6 +296,7 @@ int mpi_powm(MPI res, MPI base, MPI exp, MPI mod)  leave:  	rc = 0;  enomem: +	mpihelp_release_karatsuba_ctx(&karactx);  	if (assign_rp)  		mpi_assign_limb_space(res, rp, size);  	if (mp_marker) | 
