diff options
author | tb <> | 2023-04-07 22:28:21 +0000 |
---|---|---|
committer | tb <> | 2023-04-07 22:28:21 +0000 |
commit | 7e869a8104361a6c87fcfa8cf7c94a72191ff4d5 (patch) | |
tree | b638dc8a06aba3d8bf4f96ceb20ca85bd3acbb2e /src | |
parent | a8f0e78f0e5cc809a10b1fd6190b076773597b14 (diff) | |
download | openbsd-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.c | 14 |
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; | |||
135 | static void | 135 | static void |
136 | message(BIO *out, char *m) | 136 | message(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++) { |