diff --git a/library/bignum_mod.c b/library/bignum_mod.c index 1b3aff6a3a..4303efefa6 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, m->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 02bc9f7931..ba7d5779ff 100644 --- a/tests/suites/test_suite_bignum_mod.data +++ b/tests/suites/test_suite_bignum_mod.data @@ -56,17 +56,17 @@ mpi_residue_setup:"fe":"01":0 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":MBEDTLS_ERR_MPI_BAD_INPUT_DATA +Test mbedtls_mpi_residue_setup #3 m->limbs = r-> limbs && m > r +mpi_residue_setup:"7dfe5c6":"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:"7ffffffff0000000":"000000000000000fe":0 +Test mbedtls_mpi_residue_setup #5 m->limbs > r-> limbs && m > r +mpi_residue_setup:"7ffffffff00000000":"fe":MBEDTLS_ERR_MPI_BAD_INPUT_DATA Test mbedtls_mpi_residue_setup #6 m->limbs < r-> limbs && m > r -mpi_residue_setup:"ff":"000000000000000000000000000000000000000000000001":0 +mpi_residue_setup:"ff":"000000000000000000000000000000000000000000000001":MBEDTLS_ERR_MPI_BAD_INPUT_DATA Test mbedtls_mpi_residue_setup #7 r == m mpi_residue_setup:"fe":"fe":-4