dont unwrap
This commit is contained in:
parent
e9363700df
commit
856e5e6f38
13
src/lib.rs
13
src/lib.rs
|
@ -22,6 +22,8 @@ use winapi::{
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
use crate::error::ImageHelpError;
|
||||||
|
|
||||||
pub mod error {
|
pub mod error {
|
||||||
use std::ffi::NulError;
|
use std::ffi::NulError;
|
||||||
|
|
||||||
|
@ -39,6 +41,8 @@ pub mod error {
|
||||||
pub enum ImageHelpError {
|
pub enum ImageHelpError {
|
||||||
#[error("Module could not be found")]
|
#[error("Module could not be found")]
|
||||||
ModuleNotFound,
|
ModuleNotFound,
|
||||||
|
#[error("inline null byte found")]
|
||||||
|
InlineNullByte,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Error {
|
impl Error {
|
||||||
|
@ -107,7 +111,8 @@ impl ImageHelp {
|
||||||
) -> Result<*const u8, error::Error> {
|
) -> Result<*const u8, error::Error> {
|
||||||
let process_handle = self.process_handle.read().unwrap();
|
let process_handle = self.process_handle.read().unwrap();
|
||||||
|
|
||||||
let module_name_w = widestring::U16CString::from_str(module_name).expect("unexpected null");
|
let module_name_w = widestring::U16CString::from_str(module_name)
|
||||||
|
.map_err(|_| ImageHelpError::InlineNullByte)?;
|
||||||
|
|
||||||
let module_handle = unsafe {
|
let module_handle = unsafe {
|
||||||
let handle = LoadLibraryW(module_name_w.as_ptr());
|
let handle = LoadLibraryW(module_name_w.as_ptr());
|
||||||
|
@ -161,8 +166,8 @@ impl ImageHelp {
|
||||||
unsafe { std::mem::MaybeUninit::<dbghelp::SYMBOL_INFOW>::zeroed().assume_init() };
|
unsafe { std::mem::MaybeUninit::<dbghelp::SYMBOL_INFOW>::zeroed().assume_init() };
|
||||||
sym_info.SizeOfStruct = std::mem::size_of::<dbghelp::SYMBOL_INFOW>() as ULONG;
|
sym_info.SizeOfStruct = std::mem::size_of::<dbghelp::SYMBOL_INFOW>() as ULONG;
|
||||||
|
|
||||||
let symbol_name_utf16 =
|
let symbol_name_utf16 = widestring::U16CString::from_str(function_name)
|
||||||
widestring::U16CString::from_str(function_name).expect("unexpected null char");
|
.map_err(|_| ImageHelpError::InlineNullByte)?;
|
||||||
sym_info.MaxNameLen = 255;
|
sym_info.MaxNameLen = 255;
|
||||||
|
|
||||||
log::debug!("SymFromNameW..");
|
log::debug!("SymFromNameW..");
|
||||||
|
@ -172,6 +177,8 @@ impl ImageHelp {
|
||||||
!= 0
|
!= 0
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
|
log::debug!("asdf");
|
||||||
|
|
||||||
Ok(sym_info.Address as *const u8)
|
Ok(sym_info.Address as *const u8)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue