Skip to content

Commit 57b2fd6

Browse files
committed
Take rustls-platform-verifier 0.6
Handle fallible verifier creation. Disable miri isolation as the existing tests now touch the file system (to load root certs).
1 parent 6b88a1e commit 57b2fd6

File tree

5 files changed

+22
-17
lines changed

5 files changed

+22
-17
lines changed

.github/workflows/test.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,9 @@ jobs:
414414
miri:
415415
name: Miri
416416
runs-on: ubuntu-latest
417+
env:
418+
# allows platform-verifier initialisation to inspect filesystem
419+
MIRIFLAGS: -Zmiri-disable-isolation
417420
steps:
418421
- name: Checkout sources
419422
uses: actions/checkout@v4

Cargo.lock

Lines changed: 3 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ rustls = { version = "0.23", default-features = false, features = ["std", "tls12
1616
webpki = { package = "rustls-webpki", version = "0.103", default-features = false, features = ["std"] }
1717
libc = "0.2"
1818
log = "0.4.22"
19-
rustls-platform-verifier = "0.5.3"
19+
rustls-platform-verifier = "0.6"
2020
regex = "1.9.6"
2121
toml = { version = "0.8", default-features = false, features = ["parse"] }
2222
hickory-resolver = { version = "0.25", features = ["https-aws-lc-rs", "webpki-roots"] }

librustls/src/rustls.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2795,6 +2795,9 @@ rustls_result rustls_platform_server_cert_verifier(struct rustls_server_cert_ver
27952795
* The verifier can be used in several `rustls_client_config` instances and must be freed by
27962796
* the application using `rustls_server_cert_verifier_free` when no longer needed.
27972797
*
2798+
* If the initialization of `rustls-platform-verifier` fails, this function returns
2799+
* `NULL`.
2800+
*
27982801
* [`rustls-platform-verifier`]: https://github.com/rustls/rustls-platform-verifier
27992802
*/
28002803
struct rustls_server_cert_verifier *rustls_platform_server_cert_verifier_with_provider(const struct rustls_crypto_provider *provider);

librustls/src/verifier.rs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -666,9 +666,11 @@ impl rustls_server_cert_verifier {
666666
Some(provider) => provider,
667667
None => return rustls_result::NoDefaultCryptoProvider,
668668
};
669-
let verifier: Arc<dyn ServerCertVerifier> =
670-
Arc::new(rustls_platform_verifier::Verifier::new().with_provider(provider));
671-
set_boxed_mut_ptr(verifier_out, verifier);
669+
let verifier = match rustls_platform_verifier::Verifier::new(provider) {
670+
Ok(v) => v,
671+
Err(e) => return error::map_error(e),
672+
};
673+
set_boxed_mut_ptr(verifier_out, Arc::new(verifier));
672674
rustls_result::Ok
673675
}
674676
}
@@ -680,6 +682,9 @@ impl rustls_server_cert_verifier {
680682
/// The verifier can be used in several `rustls_client_config` instances and must be freed by
681683
/// the application using `rustls_server_cert_verifier_free` when no longer needed.
682684
///
685+
/// If the initialization of `rustls-platform-verifier` fails, this function returns
686+
/// `NULL`.
687+
///
683688
/// [`rustls-platform-verifier`]: https://github.com/rustls/rustls-platform-verifier
684689
#[no_mangle]
685690
pub extern "C" fn rustls_platform_server_cert_verifier_with_provider(
@@ -688,7 +693,10 @@ impl rustls_server_cert_verifier {
688693
ffi_panic_boundary! {
689694
let provider = try_clone_arc!(provider);
690695
let verifier: Arc<dyn ServerCertVerifier> =
691-
Arc::new(rustls_platform_verifier::Verifier::new().with_provider(provider));
696+
match rustls_platform_verifier::Verifier::new(provider) {
697+
Ok(v) => Arc::new(v),
698+
Err(_) => return core::ptr::null_mut(),
699+
};
692700
to_boxed_mut_ptr(verifier)
693701
}
694702
}

0 commit comments

Comments
 (0)