Skip to content

Commit

Permalink
Added error checking for null/empty strings to prevent bad reads
Browse files Browse the repository at this point in the history
  • Loading branch information
ragusaa authored and micahsnyder committed Jul 8, 2024
1 parent 1d30588 commit 87e4a34
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions libclamav_rust/src/scanners.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,12 @@ pub fn magic_scan(ctx: *mut cli_ctx, buf: &[u8], name: Option<String>) -> cl_err
let ptr = buf.as_ptr();
let len = buf.len();

if 0 == len{
return cl_error_t_CL_SUCCESS ;
}

match &name {
Some(name) => debug!("Scanning {}-byte file named {}.", len, name),
Some(name) => debug!("Scanning {}-byte file named {:?}.", len, name),
None => debug!("Scanning {}-byte unnamed file.", len),
}

Expand All @@ -70,13 +74,14 @@ pub fn magic_scan(ctx: *mut cli_ctx, buf: &[u8], name: Option<String>) -> cl_err
};

let ret = unsafe { cli_magic_scan_buff(ptr as *const c_void, len, ctx, name_ptr, 0) };

if ret != cl_error_t_CL_SUCCESS {
debug!("cli_magic_scan_buff returned error: {}", ret);
}

// Okay now safe to drop the name CString.
let _ = unsafe { CString::from_raw(name_ptr) };
if !name_ptr.is_null(){
let _ = unsafe { CString::from_raw(name_ptr) };
}

ret
}
Expand Down

0 comments on commit 87e4a34

Please sign in to comment.