From 16f1f71acba1c1cbfce56df016ea0a9a333ae78d Mon Sep 17 00:00:00 2001 From: auronandace Date: Wed, 24 Dec 2025 12:42:28 +0000 Subject: [PATCH] ensure internal memcpy does not copy past src or dest len --- src/header/string/mod.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/header/string/mod.rs b/src/header/string/mod.rs index a4ac5c5f2f..084a635953 100644 --- a/src/header/string/mod.rs +++ b/src/header/string/mod.rs @@ -30,7 +30,15 @@ pub unsafe extern "C" fn memccpy( ) -> *mut c_void { let to = unsafe { memchr(s2, c, n) }; let dist = if to.is_null() { - n + let dest_len = unsafe { strlen(s1 as *const i8) }; + let src_len = unsafe { strlen(s2 as *const i8) }; + if n < dest_len && n < src_len { + n + } else if dest_len < src_len { + dest_len + } else { + src_len + } } else { ((to as usize) - (s2 as usize)) + 1 };