From 1218e286e5838e225a26875cb934bcbae48b3e17 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Tue, 15 Nov 2016 06:25:49 -0800 Subject: mpi: must clamp result of conversion to bignum. * mpi/mpi.c (mp_set_uintptr, mp_set_double_intptr): The value of z might not require all of the digits implied by the size of its C data type. We must clamp the result to trim trailing zero limbs from the bignum. --- mpi/mpi.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'mpi') diff --git a/mpi/mpi.c b/mpi/mpi.c index 2777fa21..2a2fea0d 100644 --- a/mpi/mpi.c +++ b/mpi/mpi.c @@ -566,6 +566,7 @@ mp_err mp_set_uintptr(mp_int *mp, uint_ptr_t z) DIGIT(mp, ix) = (z >> shift) & MP_DIGIT_MAX; } + s_mp_clamp(mp); } else { mp_set(mp, z); } @@ -635,6 +636,8 @@ mp_err mp_set_double_intptr(mp_int *mp, double_intptr_t z) DIGIT(mp, ix) = (v >> shift) & MP_DIGIT_MAX; } + s_mp_clamp(mp); + if(z < 0) SIGN(mp) = MP_NEG; -- cgit v1.2.3