summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortb <>2023-04-07 22:28:21 +0000
committertb <>2023-04-07 22:28:21 +0000
commit7e869a8104361a6c87fcfa8cf7c94a72191ff4d5 (patch)
treeb638dc8a06aba3d8bf4f96ceb20ca85bd3acbb2e /src
parenta8f0e78f0e5cc809a10b1fd6190b076773597b14 (diff)
downloadopenbsd-7e869a8104361a6c87fcfa8cf7c94a72191ff4d5.tar.gz
openbsd-7e869a8104361a6c87fcfa8cf7c94a72191ff4d5.tar.bz2
openbsd-7e869a8104361a6c87fcfa8cf7c94a72191ff4d5.zip
bn_test: keep the error stack clean
Make message() print and clear the error stack. This way we can know what test errored. To make this work also clear the error stack after a handful of xfail tests.
Diffstat (limited to 'src')
-rw-r--r--src/regress/lib/libcrypto/bn/bn_test.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/regress/lib/libcrypto/bn/bn_test.c b/src/regress/lib/libcrypto/bn/bn_test.c
index a5fe58f55a..1476a92ee2 100644
--- a/src/regress/lib/libcrypto/bn/bn_test.c
+++ b/src/regress/lib/libcrypto/bn/bn_test.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: bn_test.c,v 1.8 2023/04/07 22:25:09 tb Exp $ */ 1/* $OpenBSD: bn_test.c,v 1.9 2023/04/07 22:28:21 tb Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -135,6 +135,9 @@ static int results = 0;
135static void 135static void
136message(BIO *out, char *m) 136message(BIO *out, char *m)
137{ 137{
138 ERR_print_errors_fp(stderr);
139 ERR_clear_error();
140
138 fprintf(stderr, "test %s\n", m); 141 fprintf(stderr, "test %s\n", m);
139 BIO_puts(out, "print \"test "); 142 BIO_puts(out, "print \"test ");
140 BIO_puts(out, m); 143 BIO_puts(out, m);
@@ -483,6 +486,7 @@ test_div(BIO *bp, BN_CTX *ctx)
483 fprintf(stderr, "Division by zero succeeded!\n"); 486 fprintf(stderr, "Division by zero succeeded!\n");
484 goto err; 487 goto err;
485 } 488 }
489 ERR_clear_error();
486 490
487 for (i = 0; i < num0 + num1; i++) { 491 for (i = 0; i < num0 + num1; i++) {
488 if (i < num1) { 492 if (i < num1) {
@@ -895,12 +899,14 @@ test_mont(BIO *bp, BN_CTX *ctx)
895 fprintf(stderr, "BN_MONT_CTX_set succeeded for zero modulus!\n"); 899 fprintf(stderr, "BN_MONT_CTX_set succeeded for zero modulus!\n");
896 goto err; 900 goto err;
897 } 901 }
902 ERR_clear_error();
898 903
899 CHECK_GOTO(BN_set_word(n, 16)); 904 CHECK_GOTO(BN_set_word(n, 16));
900 if (BN_MONT_CTX_set(mont, n, ctx)) { 905 if (BN_MONT_CTX_set(mont, n, ctx)) {
901 fprintf(stderr, "BN_MONT_CTX_set succeeded for even modulus!\n"); 906 fprintf(stderr, "BN_MONT_CTX_set succeeded for even modulus!\n");
902 goto err; 907 goto err;
903 } 908 }
909 ERR_clear_error();
904 910
905 CHECK_GOTO(BN_bntest_rand(a, 100, 0, 0)); 911 CHECK_GOTO(BN_bntest_rand(a, 100, 0, 0));
906 CHECK_GOTO(BN_bntest_rand(b, 100, 0, 0)); 912 CHECK_GOTO(BN_bntest_rand(b, 100, 0, 0));
@@ -1033,6 +1039,7 @@ test_mod_mul(BIO *bp, BN_CTX *ctx)
1033 fprintf(stderr, "BN_mod_mul with zero modulus succeeded!\n"); 1039 fprintf(stderr, "BN_mod_mul with zero modulus succeeded!\n");
1034 goto err; 1040 goto err;
1035 } 1041 }
1042 ERR_clear_error();
1036 1043
1037 for (j = 0; j < 3; j++) { 1044 for (j = 0; j < 3; j++) {
1038 CHECK_GOTO(BN_bntest_rand(c, 1024, 0, 0)); 1045 CHECK_GOTO(BN_bntest_rand(c, 1024, 0, 0));
@@ -1118,14 +1125,17 @@ test_mod_exp(BIO *bp, BN_CTX *ctx)
1118 fprintf(stderr, "BN_mod_exp with zero modulus succeeded!\n"); 1125 fprintf(stderr, "BN_mod_exp with zero modulus succeeded!\n");
1119 goto err; 1126 goto err;
1120 } 1127 }
1128 ERR_clear_error();
1121 if (BN_mod_exp_ct(d, a, b, c, ctx)) { 1129 if (BN_mod_exp_ct(d, a, b, c, ctx)) {
1122 fprintf(stderr, "BN_mod_exp_ct with zero modulus succeeded!\n"); 1130 fprintf(stderr, "BN_mod_exp_ct with zero modulus succeeded!\n");
1123 goto err; 1131 goto err;
1124 } 1132 }
1133 ERR_clear_error();
1125 if (BN_mod_exp_nonct(d, a, b, c, ctx)) { 1134 if (BN_mod_exp_nonct(d, a, b, c, ctx)) {
1126 fprintf(stderr, "BN_mod_exp_nonct with zero modulus succeeded!\n"); 1135 fprintf(stderr, "BN_mod_exp_nonct with zero modulus succeeded!\n");
1127 goto err; 1136 goto err;
1128 } 1137 }
1138 ERR_clear_error();
1129 1139
1130 CHECK_GOTO(BN_bntest_rand(c, 30, 0, 1)); /* must be odd for montgomery */ 1140 CHECK_GOTO(BN_bntest_rand(c, 30, 0, 1)); /* must be odd for montgomery */
1131 for (i = 0; i < num2; i++) { 1141 for (i = 0; i < num2; i++) {
@@ -1254,6 +1264,7 @@ test_mod_exp_mont_consttime(BIO *bp, BN_CTX *ctx)
1254 "succeeded\n"); 1264 "succeeded\n");
1255 goto err; 1265 goto err;
1256 } 1266 }
1267 ERR_clear_error();
1257 1268
1258 CHECK_GOTO(BN_set_word(c, 16)); 1269 CHECK_GOTO(BN_set_word(c, 16));
1259 if (BN_mod_exp_mont_consttime(d, a, b, c, ctx, NULL)) { 1270 if (BN_mod_exp_mont_consttime(d, a, b, c, ctx, NULL)) {
@@ -1261,6 +1272,7 @@ test_mod_exp_mont_consttime(BIO *bp, BN_CTX *ctx)
1261 "succeeded\n"); 1272 "succeeded\n");
1262 goto err; 1273 goto err;
1263 } 1274 }
1275 ERR_clear_error();
1264 1276
1265 CHECK_GOTO(BN_bntest_rand(c, 30, 0, 1)); /* must be odd for montgomery */ 1277 CHECK_GOTO(BN_bntest_rand(c, 30, 0, 1)); /* must be odd for montgomery */
1266 for (i = 0; i < num2; i++) { 1278 for (i = 0; i < num2; i++) {