From: Shivani Bhardwaj Date: Sat, 20 Feb 2021 06:30:17 +0000 (+0530) Subject: dcerpc/udp: remove transmute X-Git-Tag: suricata-6.0.2~29 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6801590aa17ad58be2d8744acbedac4cd8ab5a23;p=thirdparty%2Fsuricata.git dcerpc/udp: remove transmute The book defines transmute as "This is really, truly, the most horribly unsafe thing you can do in Rust. The guardrails here are dental floss." Transmute can result into mind boggling undefined behaviors. Get rid of it wherever possible. (cherry picked from commit 0ca8591994abfe92bbef20ea6ab1856b11e3efde) --- diff --git a/rust/src/dcerpc/dcerpc_udp.rs b/rust/src/dcerpc/dcerpc_udp.rs index 959b02483e..14a09be94b 100644 --- a/rust/src/dcerpc/dcerpc_udp.rs +++ b/rust/src/dcerpc/dcerpc_udp.rs @@ -275,7 +275,7 @@ pub extern "C" fn rs_dcerpc_udp_get_tx( let dce_state = cast_pointer!(state, DCERPCUDPState); match dce_state.get_tx(tx_id) { Some(tx) => { - return unsafe{transmute(tx)}; + return unsafe{&mut *(tx as *mut DCERPCTransaction)}; }, None => { return std::ptr::null_mut();