Skip to content

Commit f12aa12

Browse files
committed
use double indirection for rustls_client_cert_verifier
1 parent 170cac0 commit f12aa12

File tree

3 files changed

+8
-10
lines changed

3 files changed

+8
-10
lines changed

src/cipher.rs

+5-7
Original file line numberDiff line numberDiff line change
@@ -585,18 +585,16 @@ impl CastPtr for rustls_client_cert_verifier {
585585
type RustType = Arc<dyn ClientCertVerifier>;
586586
}
587587

588-
impl ArcCastPtr for rustls_client_cert_verifier {}
588+
impl BoxCastPtr for rustls_client_cert_verifier {}
589589

590590
impl rustls_client_cert_verifier {
591591
/// Free a `rustls_client_cert_verifier` previously returned from
592592
/// `rustls_client_cert_verifier_builder_build`. Calling with NULL is fine. Must not be
593593
/// called twice with the same value.
594594
#[no_mangle]
595-
pub extern "C" fn rustls_client_cert_verifier_free(
596-
verifier: *const rustls_client_cert_verifier,
597-
) {
595+
pub extern "C" fn rustls_client_cert_verifier_free(verifier: *mut rustls_client_cert_verifier) {
598596
ffi_panic_boundary! {
599-
ArcCastPtr::free(verifier);
597+
BoxCastPtr::to_box(verifier);
600598
}
601599
}
602600
}
@@ -718,7 +716,7 @@ impl rustls_web_pki_client_cert_verifier_builder {
718716
#[no_mangle]
719717
pub extern "C" fn rustls_web_pki_client_cert_verifier_builder_build(
720718
builder: *mut rustls_web_pki_client_cert_verifier_builder,
721-
verifier_out: *mut *const rustls_client_cert_verifier,
719+
verifier_out: *mut *mut rustls_client_cert_verifier,
722720
) -> rustls_result {
723721
ffi_panic_boundary! {
724722
let client_verifier_builder: &mut Option<ClientCertVerifierBuilder> = try_mut_from_ptr!(builder);
@@ -738,7 +736,7 @@ impl rustls_web_pki_client_cert_verifier_builder {
738736
Err(e) => return error::map_verifier_builder_error(e),
739737
};
740738

741-
ArcCastPtr::set_mut_ptr(verifier_out, verifier);
739+
BoxCastPtr::set_mut_ptr(verifier_out, verifier);
742740

743741
rustls_result::Ok
744742
}

src/rustls.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -984,7 +984,7 @@ void rustls_root_cert_store_free(const struct rustls_root_cert_store *store);
984984
* `rustls_client_cert_verifier_builder_build`. Calling with NULL is fine. Must not be
985985
* called twice with the same value.
986986
*/
987-
void rustls_client_cert_verifier_free(const struct rustls_client_cert_verifier *verifier);
987+
void rustls_client_cert_verifier_free(struct rustls_client_cert_verifier *verifier);
988988

989989
/**
990990
* Create a `rustls_web_pki_client_cert_verifier_builder`. Caller owns the memory and must
@@ -1027,7 +1027,7 @@ rustls_result rustls_web_pki_client_cert_verifier_builder_add_crl(struct rustls_
10271027
* `rustls_web_pki_client_cert_verifier_builder_free` for details about lifetime.
10281028
*/
10291029
rustls_result rustls_web_pki_client_cert_verifier_builder_build(struct rustls_web_pki_client_cert_verifier_builder *builder,
1030-
const struct rustls_client_cert_verifier **verifier_out);
1030+
struct rustls_client_cert_verifier **verifier_out);
10311031

10321032
/**
10331033
* Free a `rustls_client_cert_verifier_builder` previously returned from

tests/server.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ main(int argc, const char **argv)
242242
const struct rustls_root_cert_store *client_cert_root_store = NULL;
243243
struct rustls_web_pki_client_cert_verifier_builder
244244
*client_cert_verifier_builder = NULL;
245-
const struct rustls_client_cert_verifier *client_cert_verifier = NULL;
245+
struct rustls_client_cert_verifier *client_cert_verifier = NULL;
246246

247247
/* Set this global variable for logging purposes. */
248248
programname = "server";

0 commit comments

Comments
 (0)