Skip to content
This repository was archived by the owner on Jan 22, 2025. It is now read-only.

Commit e3399d9

Browse files
committed
Uses std::mem::transmute and std::ptr::write in unsafe code in append_vec.rs
1 parent 20fc3a5 commit e3399d9

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

runtime/src/append_vec.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -706,7 +706,10 @@ pub mod tests {
706706
fn set_data_len_unsafe(&self, new_data_len: u64) {
707707
// UNSAFE: cast away & (= const ref) to &mut to force to mutate append-only (=read-only) AppendVec
708708
unsafe {
709-
*(&self.meta.data_len as *const u64 as *mut u64) = new_data_len;
709+
std::ptr::write(
710+
std::mem::transmute::<*const u64, *mut u64>(&self.meta.data_len),
711+
new_data_len,
712+
);
710713
}
711714
}
712715

@@ -721,7 +724,10 @@ pub mod tests {
721724
fn set_executable_as_byte(&self, new_executable_byte: u8) {
722725
// UNSAFE: Force to interpret mmap-backed &bool as &u8 to write some crafted value;
723726
unsafe {
724-
*(&self.account_meta.executable as *const bool as *mut u8) = new_executable_byte;
727+
std::ptr::write(
728+
std::mem::transmute::<*const bool, *mut u8>(&self.account_meta.executable),
729+
new_executable_byte,
730+
);
725731
}
726732
}
727733
}

0 commit comments

Comments
 (0)