diff --git a/library/bignum_mod.c b/library/bignum_mod.c index c10fb2ed3..1b3aff6a3 100644 --- a/library/bignum_mod.c +++ b/library/bignum_mod.c @@ -39,7 +39,7 @@ int mbedtls_mpi_mod_residue_setup( mbedtls_mpi_mod_residue *r, mbedtls_mpi_uint *p, size_t p_limbs ) { - if( p_limbs > m->limbs || !mbedtls_mpi_core_lt_ct( p, m->p, p_limbs ) ) + if( p_limbs < m->limbs || !mbedtls_mpi_core_lt_ct( p, m->p, m->limbs ) ) return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA ); r->limbs = m->limbs; diff --git a/tests/suites/test_suite_bignum_mod.data b/tests/suites/test_suite_bignum_mod.data index e0aa5407f..02bc9f793 100644 --- a/tests/suites/test_suite_bignum_mod.data +++ b/tests/suites/test_suite_bignum_mod.data @@ -57,16 +57,16 @@ Test mbedtls_mpi_residue_setup #2 r == m - 1 mpi_residue_setup:"ff":"fe":0 Test mbedtls_mpi_residue_setup #3 m->limbs > r-> limbs && m > r -mpi_residue_setup:"000000000000000000000000000000007dfe5c6beb35a2d6":"fe":0 +mpi_residue_setup:"000000000000000000000000000000007dfe5c6beb35a2d6":"fe":MBEDTLS_ERR_MPI_BAD_INPUT_DATA -Test mbedtls_mpi_residue_setup #4 m->limbs > r-> limbs && m > r -mpi_residue_setup:"7ffffffffffffffffffffffffffffffffffffffffffffff1":"fe":0 +Test mbedtls_mpi_residue_setup #4 m->limbs = r-> limbs && m > r +mpi_residue_setup:"7ffffffffffffffffffffffffffffffffffffffffffffff1":"0000000000000000000000000000000000000000000000fe":0 -Test mbedtls_mpi_residue_setup #5 m->limbs > r-> limbs && m > r -mpi_residue_setup:"7ffffffffffffffffffff000000000000000000000000000":"fe":-4 +Test mbedtls_mpi_residue_setup #5 m->limbs < r-> limbs && m > r +mpi_residue_setup:"7ffffffff0000000":"000000000000000fe":0 Test mbedtls_mpi_residue_setup #6 m->limbs < r-> limbs && m > r -mpi_residue_setup:"ff":"000000000000000000000000000000000000000000000001":-4 +mpi_residue_setup:"ff":"000000000000000000000000000000000000000000000001":0 Test mbedtls_mpi_residue_setup #7 r == m mpi_residue_setup:"fe":"fe":-4