detect/mime: fix detect mime nits

Return 0 if .to_str() fails in functions
SCDetectMimeEmailGetData and SCDetectMimeEmailGetDataArray

Fixes:
431822c ("detect: add email.from")
96e461f ("detect: add email.received keyword")
pull/13878/head
Alice Akaki 1 year ago committed by Victor Julien
parent 4f1cc19f25
commit 6c88cc1e0c

@ -27,8 +27,14 @@ pub unsafe extern "C" fn SCDetectMimeEmailGetData(
ctx: &MimeStateSMTP, buffer: *mut *const u8, buffer_len: *mut u32,
hname: *const std::os::raw::c_char,
) -> u8 {
*buffer = ptr::null();
*buffer_len = 0;
let c_str = CStr::from_ptr(hname); //unsafe
let str = c_str.to_str().unwrap_or("");
let Ok(str) = c_str.to_str() else {
SCLogDebug!("Received non-UTF8 string in SCDetectMimeEmailGetData");
return 0;
};
for h in &ctx.headers[..ctx.main_headers_nb] {
if mime::slice_equals_lowercase(&h.name, str.as_bytes()) {
@ -37,10 +43,6 @@ pub unsafe extern "C" fn SCDetectMimeEmailGetData(
return 1;
}
}
*buffer = ptr::null();
*buffer_len = 0;
return 0;
}
@ -69,8 +71,14 @@ pub unsafe extern "C" fn SCDetectMimeEmailGetDataArray(
ctx: &MimeStateSMTP, buffer: *mut *const u8, buffer_len: *mut u32,
hname: *const std::os::raw::c_char, idx: u32,
) -> u8 {
*buffer = ptr::null();
*buffer_len = 0;
let c_str = CStr::from_ptr(hname); //unsafe
let str = c_str.to_str().unwrap_or("");
let Ok(str) = c_str.to_str() else {
SCLogDebug!("Received non-UTF8 string in SCDetectMimeEmailGetDataArray");
return 0;
};
let mut i = 0;
for h in &ctx.headers[..ctx.main_headers_nb] {
@ -83,9 +91,5 @@ pub unsafe extern "C" fn SCDetectMimeEmailGetDataArray(
i += 1;
}
}
*buffer = ptr::null();
*buffer_len = 0;
return 0;
}

Loading…
Cancel
Save