From 304ad9698aba59858be761b87d8f6b2568754bff Mon Sep 17 00:00:00 2001 From: Julien Cretin Date: Fri, 28 Nov 2025 10:51:10 +0100 Subject: [PATCH] Fix undefined behavior due to uninitialized bytes in Usbd::write() Fixes #15 --- src/usbd.rs | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/usbd.rs b/src/usbd.rs index 3ffaaa1..bd08db7 100644 --- a/src/usbd.rs +++ b/src/usbd.rs @@ -7,7 +7,6 @@ //! * No notification when the status stage is ACK'd. use core::cell::Cell; -use core::mem::MaybeUninit; use core::sync::atomic::{compiler_fence, Ordering}; use critical_section::{CriticalSection, Mutex}; use usb_device::{ @@ -375,12 +374,8 @@ impl UsbBus for Usbd { return Err(UsbError::WouldBlock); } - let mut ram_buf: MaybeUninit<[u8; 64]> = MaybeUninit::uninit(); - unsafe { - let slice = &mut *ram_buf.as_mut_ptr(); - slice[..buf.len()].copy_from_slice(buf); - } - let ram_buf = unsafe { ram_buf.assume_init() }; + let mut ram_buf = [0u8; 64]; + ram_buf[..buf.len()].copy_from_slice(buf); let epin = [ ®s.epin0,