From 75ef5232300a7d005578003c2dfc4d2b38cb7b8a Mon Sep 17 00:00:00 2001 From: Kornel Date: Wed, 1 Oct 2025 11:12:40 +0100 Subject: [PATCH] Safer CryptoBufferBuilder::build --- boring/src/ssl/callbacks.rs | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/boring/src/ssl/callbacks.rs b/boring/src/ssl/callbacks.rs index ea0a73c2..f08409b3 100644 --- a/boring/src/ssl/callbacks.rs +++ b/boring/src/ssl/callbacks.rs @@ -16,7 +16,7 @@ use foreign_types::ForeignType; use foreign_types::ForeignTypeRef; use libc::{c_char, c_int, c_uchar, c_uint, c_void}; use std::ffi::CStr; -use std::mem::MaybeUninit; +use std::mem::{self, MaybeUninit}; use std::ptr; use std::slice; use std::str; @@ -769,12 +769,8 @@ impl<'a> CryptoBufferBuilder<'a> { // Make sure all bytes in buffer initialized as required by Boring SSL. return Err(ErrorStack::internal_error_str("invalid len")); } - unsafe { - let mut result = ptr::null_mut(); - ptr::swap(&mut self.buffer, &mut result); - std::mem::forget(self); - Ok(result) - } + // Drop is no-op if the buffer is null + Ok(mem::replace(&mut self.buffer, ptr::null_mut())) } }