From 349eadc58faff851ee8dcbb43c702f0ddecfcbb8 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Sat, 29 Aug 2020 15:18:23 +0200 Subject: [PATCH 1/2] Report the first failure, not the last one If test_fail is called multiple times in the same test case, report the location of the first failure, not the last one. With this change, you no longer need to take care in tests that use auxiliary functions not to fail in the main function if the auxiliary function has failed. Signed-off-by: Gilles Peskine --- tests/suites/helpers.function | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/suites/helpers.function b/tests/suites/helpers.function index 7425a359c..ec43d1349 100644 --- a/tests/suites/helpers.function +++ b/tests/suites/helpers.function @@ -407,6 +407,12 @@ void test_set_step( unsigned long step ) void test_fail( const char *test, int line_no, const char* filename ) { + if( test_info.result == TEST_RESULT_FAILED ) + { + /* We've already recorded the test as having failed. Don't + * overwrite any previous information about the failure. */ + return; + } test_info.result = TEST_RESULT_FAILED; test_info.test = test; test_info.line_no = line_no; From 0deccf1f3ee93843dae0c2a3d5e59311a8480af2 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Wed, 2 Sep 2020 15:18:07 +0200 Subject: [PATCH 2/2] Initialize ret from test code The test function mbedtls_mpi_lt_mpi_ct did not initialize ret in test code. If there was a bug in library code whereby the library function mbedtls_mpi_lt_mpi_ct() did not set ret when it should, we might have missed it if ret happened to contain the expected value. So initialize ret to a value that we never expect. Signed-off-by: Gilles Peskine --- tests/suites/test_suite_mpi.function | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/suites/test_suite_mpi.function b/tests/suites/test_suite_mpi.function index e54aaffe6..2b2daf652 100644 --- a/tests/suites/test_suite_mpi.function +++ b/tests/suites/test_suite_mpi.function @@ -596,7 +596,7 @@ void mbedtls_mpi_lt_mpi_ct( int size_X, char * input_X, int size_Y, char * input_Y, int input_ret, int input_err ) { - unsigned ret; + unsigned ret = -1; unsigned input_uret = input_ret; mbedtls_mpi X, Y; mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y );