summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorkenjiro <>2026-07-31 06:32:34 +0000
committerkenjiro <>2026-07-31 06:32:34 +0000
commitc7810630ba9823137bac2dbbb150d43088de37d6 (patch)
treecdbb152e8c9f70bfc912dc26d8145bbd6e50562d /src
parent49ff7c051c516a8d190b62787dc46f76275da66a (diff)
downloadopenbsd-c7810630ba9823137bac2dbbb150d43088de37d6.tar.gz
openbsd-c7810630ba9823137bac2dbbb150d43088de37d6.tar.bz2
openbsd-c7810630ba9823137bac2dbbb150d43088de37d6.zip
callbackfailures: allow specifying the root certificate file
Accept an optional roots file argument while retaining /etc/ssl/cert.pem as the default. This allows portable regress users to provide a CA bundle when the default path is unavailable. ok tb
Diffstat (limited to 'src')
-rw-r--r--src/regress/lib/libcrypto/x509/callbackfailures.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/regress/lib/libcrypto/x509/callbackfailures.c b/src/regress/lib/libcrypto/x509/callbackfailures.c
index 9230122146..112f936fcb 100644
--- a/src/regress/lib/libcrypto/x509/callbackfailures.c
+++ b/src/regress/lib/libcrypto/x509/callbackfailures.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: callbackfailures.c,v 1.3 2024/08/23 12:56:26 anton Exp $ */ 1/* $OpenBSD: callbackfailures.c,v 1.4 2026/07/31 06:32:34 kenjiro Exp $ */
2/* 2/*
3 * Copyright (c) 2020 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2020 Joel Sing <jsing@openbsd.org>
4 * Copyright (c) 2020-2021 Bob Beck <beck@openbsd.org> 4 * Copyright (c) 2020-2021 Bob Beck <beck@openbsd.org>
@@ -214,9 +214,9 @@ struct verify_cert_test verify_cert_tests[] = {
214 (sizeof(verify_cert_tests) / sizeof(*verify_cert_tests)) 214 (sizeof(verify_cert_tests) / sizeof(*verify_cert_tests))
215 215
216static int 216static int
217verify_cert_test(const char *certs_path, int mode) 217verify_cert_test(const char *certs_path, const char *roots_file, int mode)
218{ 218{
219 char *roots_file, *bundle_file, *bundle_file2, *roots_dir; 219 char *bundle_file, *bundle_file2, *roots_dir;
220 struct verify_cert_test *vct; 220 struct verify_cert_test *vct;
221 int failed = 0; 221 int failed = 0;
222 int chains; 222 int chains;
@@ -225,8 +225,6 @@ verify_cert_test(const char *certs_path, int mode)
225 for (i = 0; i < N_VERIFY_CERT_TESTS; i++) { 225 for (i = 0; i < N_VERIFY_CERT_TESTS; i++) {
226 vct = &verify_cert_tests[i]; 226 vct = &verify_cert_tests[i];
227 227
228 if (asprintf(&roots_file, "/etc/ssl/cert.pem") == -1)
229 errx(1, "asprintf");
230 if (asprintf(&bundle_file, "%s/%s/bundle.pem", certs_path, 228 if (asprintf(&bundle_file, "%s/%s/bundle.pem", certs_path,
231 vct->id) == -1) 229 vct->id) == -1)
232 errx(1, "asprintf"); 230 errx(1, "asprintf");
@@ -270,7 +268,6 @@ verify_cert_test(const char *certs_path, int mode)
270 } 268 }
271 fprintf(stderr, "\n"); 269 fprintf(stderr, "\n");
272 270
273 free(roots_file);
274 free(bundle_file); 271 free(bundle_file);
275 free(bundle_file2); 272 free(bundle_file2);
276 free(roots_dir); 273 free(roots_dir);
@@ -282,17 +279,21 @@ verify_cert_test(const char *certs_path, int mode)
282int 279int
283main(int argc, char **argv) 280main(int argc, char **argv)
284{ 281{
282 const char *roots_file = "/etc/ssl/cert.pem";
285 int failed = 0; 283 int failed = 0;
286 284
287 if (argc != 2) { 285 if (argc < 2 || argc > 3) {
288 fprintf(stderr, "usage: %s <certs_path>\n", argv[0]); 286 fprintf(stderr, "usage: %s <certs_path> [roots_file]\n",
287 argv[0]);
289 exit(1); 288 exit(1);
290 } 289 }
290 if (argc == 3)
291 roots_file = argv[2];
291 292
292 fprintf(stderr, "\n\nTesting legacy x509_vfy\n"); 293 fprintf(stderr, "\n\nTesting legacy x509_vfy\n");
293 failed |= verify_cert_test(argv[1], MODE_LEGACY_VFY); 294 failed |= verify_cert_test(argv[1], roots_file, MODE_LEGACY_VFY);
294 fprintf(stderr, "\n\nTesting modern x509_vfy\n"); 295 fprintf(stderr, "\n\nTesting modern x509_vfy\n");
295 failed |= verify_cert_test(argv[1], MODE_MODERN_VFY); 296 failed |= verify_cert_test(argv[1], roots_file, MODE_MODERN_VFY);
296 297
297 return (failed); 298 return (failed);
298} 299}