mirror of
https://github.com/chatmail/core.git
synced 2026-04-23 00:16:34 +03:00
Merge pull request #705 from deltachat/safer-strn
len-check in strncasecmp()
This commit is contained in:
@@ -8,7 +8,7 @@ use crate::mailmime::types_helper::*;
|
||||
|
||||
pub(crate) use libc::{
|
||||
calloc, close, free, isalpha, isdigit, malloc, memcmp, memcpy, memmove, memset, realloc,
|
||||
strcpy, strlen, strncmp, strncpy,
|
||||
strcpy, strlen, strncmp, strncpy, strnlen,
|
||||
};
|
||||
|
||||
pub(crate) unsafe fn strcasecmp(s1: *const libc::c_char, s2: *const libc::c_char) -> libc::c_int {
|
||||
@@ -40,8 +40,8 @@ pub(crate) unsafe fn strncasecmp(
|
||||
|
||||
// s1 and s2 might not be null terminated.
|
||||
|
||||
let s1_slice = std::slice::from_raw_parts(s1 as *const u8, n);
|
||||
let s2_slice = std::slice::from_raw_parts(s2 as *const u8, n);
|
||||
let s1_slice = std::slice::from_raw_parts(s1 as *const u8, strnlen(s1 as *const i8, n));
|
||||
let s2_slice = std::slice::from_raw_parts(s2 as *const u8, strnlen(s2 as *const i8, n));
|
||||
|
||||
let s1 = std::ffi::CStr::from_bytes_with_nul_unchecked(s1_slice)
|
||||
.to_string_lossy()
|
||||
@@ -1693,6 +1693,14 @@ mod tests {
|
||||
4,
|
||||
)
|
||||
});
|
||||
|
||||
assert_eq!(0, unsafe {
|
||||
strncasecmp(
|
||||
CString::new("hell").unwrap().as_ptr(),
|
||||
CString::new("Hell").unwrap().as_ptr(),
|
||||
100_000_000,
|
||||
)
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
Reference in New Issue
Block a user