Add safety coments to bssl-sys As with all FFI libraries, the Rust conventions around safety don't really work well. There's a ton of noise from bindgen needing to conservatively mark everything unsafe, obscuring true safety sharp edges like Rust's FFI-incompatible empty slice representation. Change-Id: I2199e61b4900a01e3610772063765c5bb0cb493c Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/66287 Commit-Queue: David Benjamin <davidben@google.com> Reviewed-by: Bob Beck <bbe@google.com>
diff --git a/rust/bssl-sys/src/lib.rs b/rust/bssl-sys/src/lib.rs index 9edbd08..fa52ec7 100644 --- a/rust/bssl-sys/src/lib.rs +++ b/rust/bssl-sys/src/lib.rs
@@ -43,20 +43,24 @@ // TODO(crbug.com/boringssl/596): Remove these wrappers. #[cfg(unsupported_inline_wrappers)] pub fn ERR_GET_LIB(packed_error: u32) -> i32 { + // Safety: This is safe for all inputs. bindgen conservatively marks everything unsafe. unsafe { ERR_GET_LIB_RUST(packed_error) } } #[cfg(unsupported_inline_wrappers)] pub fn ERR_GET_REASON(packed_error: u32) -> i32 { + // Safety: This is safe for all inputs. bindgen conservatively marks everything unsafe. unsafe { ERR_GET_REASON_RUST(packed_error) } } #[cfg(unsupported_inline_wrappers)] pub fn ERR_GET_FUNC(packed_error: u32) -> i32 { + // Safety: This is safe for all inputs. bindgen conservatively marks everything unsafe. unsafe { ERR_GET_FUNC_RUST(packed_error) } } pub fn init() { + // Safety: `CRYPTO_library_init` may be called multiple times and concurrently. unsafe { CRYPTO_library_init(); }