diff --git a/tests/suites/test_suite_constant_time.function b/tests/suites/test_suite_constant_time.function index 5b25c5472..ff3eb462c 100644 --- a/tests/suites/test_suite_constant_time.function +++ b/tests/suites/test_suite_constant_time.function @@ -130,10 +130,12 @@ void mbedtls_ct_if(char *c_str, char *t_str, char *f_str) * check t and f before making them negative. */ #define ABS_INT_MIN (UINT_MAX - ((unsigned int) (INT_MIN)) + 1U) - int t_neg = t <= ABS_INT_MIN ? -((int) t) : INT_MIN; - int f_neg = f <= ABS_INT_MIN ? -((int) f) : INT_MIN; + int t_neg = (t <= ABS_INT_MIN) && (t <= INT_MAX) ? -((int) t) : INT_MIN; + int f_neg = (f <= ABS_INT_MIN) && (t <= INT_MAX) ? -((int) f) : INT_MIN; int expected0_neg = c ? t_neg : 0; int expected_neg = c ? t_neg : f_neg; + int t_fits_in_int = t <= INT_MAX; + int f_fits_in_int = f <= INT_MAX; TEST_CF_SECRET(&c, sizeof(c)); TEST_CF_SECRET(&t, sizeof(t)); @@ -157,8 +159,14 @@ void mbedtls_ct_if(char *c_str, char *t_str, char *f_str) TEST_EQUAL(mbedtls_ct_mpi_uint_if_else_0(c, t), (mbedtls_mpi_uint) expected0); #endif - TEST_EQUAL(mbedtls_ct_error_if_else_0(c, t_neg), expected0_neg); - TEST_EQUAL(mbedtls_ct_error_if(c, t_neg, f_neg), expected_neg); + if (t_fits_in_int) { + TEST_EQUAL(mbedtls_ct_int_if_else_0(c, (int) t), (int) expected0); + if (f_fits_in_int) { + TEST_EQUAL(mbedtls_ct_int_if(c, (int) t, (int) f), (int) expected); + } + } + TEST_EQUAL(mbedtls_ct_int_if_else_0(c, t_neg), expected0_neg); + TEST_EQUAL(mbedtls_ct_int_if(c, t_neg, f_neg), expected_neg); TEST_CF_PUBLIC(&c, sizeof(c)); TEST_CF_PUBLIC(&t, sizeof(t));