Improve testing for mbedtls_ct_int_if
Signed-off-by: Dave Rodgman <dave.rodgman@arm.com>
diff --git a/tests/suites/test_suite_constant_time.function b/tests/suites/test_suite_constant_time.function
index 5b25c54..ff3eb46 100644
--- a/tests/suites/test_suite_constant_time.function
+++ b/tests/suites/test_suite_constant_time.function
@@ -130,10 +130,12 @@
* 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 @@
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));