diff options
author | Richard Levitte <levitte@openssl.org> | 2021-07-09 08:51:55 +0200 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2021-07-10 12:05:51 +0200 |
commit | f1d97905bbd8679b7647c992b97f526791069040 (patch) | |
tree | 3d971fd7c56ea01697d80195a5efd7055ec0affc /test/asn1_encode_test.c | |
parent | 5434acb6c4d56507d761b28f7e142ccab808a8fa (diff) |
Fix test/asn1_encode_test.c to handle encoding/decoding failure
Make it only report (and fail on) encoding/decoding failures when success
is expected.
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/16027)
Diffstat (limited to 'test/asn1_encode_test.c')
-rw-r--r-- | test/asn1_encode_test.c | 49 |
1 files changed, 27 insertions, 22 deletions
diff --git a/test/asn1_encode_test.c b/test/asn1_encode_test.c index 8432338723..dc0dfaf7b5 100644 --- a/test/asn1_encode_test.c +++ b/test/asn1_encode_test.c @@ -742,14 +742,17 @@ static int test_intern(const TEST_PACKAGE *package) sizeof(test_custom_data) / sizeof(test_custom_data[0])); for (i = 0; i < nelems; i++) { size_t pos = i * package->encode_expectations_elem_size; - switch (do_encode_custom((EXPECTED *)&((unsigned char *)package - ->encode_expectations)[pos], - &test_custom_data[i], package)) { + EXPECTED *expected + = (EXPECTED *)&((unsigned char *)package->encode_expectations)[pos]; + + switch (do_encode_custom(expected, &test_custom_data[i], package)) { case -1: - TEST_error("Failed custom encode round trip %u of %s", - i, package->name); - TEST_openssl_errors(); - fail++; + if (expected->success) { + TEST_error("Failed custom encode round trip %u of %s", + i, package->name); + TEST_openssl_errors(); + fail++; + } break; case 0: TEST_error("Custom encode round trip %u of %s mismatch", @@ -763,16 +766,16 @@ static int test_intern(const TEST_PACKAGE *package) OPENSSL_die("do_encode_custom() return unknown value", __FILE__, __LINE__); } - switch (do_decode_custom(&test_custom_data[i], - (EXPECTED *)&((unsigned char *)package - ->encode_expectations)[pos], + switch (do_decode_custom(&test_custom_data[i], expected, package->encode_expectations_elem_size, package)) { case -1: - TEST_error("Failed custom decode round trip %u of %s", - i, package->name); - TEST_openssl_errors(); - fail++; + if (expected->success) { + TEST_error("Failed custom decode round trip %u of %s", + i, package->name); + TEST_openssl_errors(); + fail++; + } break; case 0: TEST_error("Custom decode round trip %u of %s mismatch", @@ -792,15 +795,17 @@ static int test_intern(const TEST_PACKAGE *package) nelems = package->encdec_data_size / package->encdec_data_elem_size; for (i = 0; i < nelems; i++) { size_t pos = i * package->encdec_data_elem_size; - switch (do_enc_dec((EXPECTED *)&((unsigned char *)package - ->encdec_data)[pos], - package->encdec_data_elem_size, - package)) { + EXPECTED *expected + = (EXPECTED *)&((unsigned char *)package->encdec_data)[pos]; + + switch (do_enc_dec(expected, package->encdec_data_elem_size, package)) { case -1: - TEST_error("Failed encode/decode round trip %u of %s", - i, package->name); - TEST_openssl_errors(); - fail++; + if (expected->success) { + TEST_error("Failed encode/decode round trip %u of %s", + i, package->name); + TEST_openssl_errors(); + fail++; + } break; case 0: TEST_error("Encode/decode round trip %u of %s mismatch", |