From 856e5e6f38991cd97342287350b091251f9e9aec Mon Sep 17 00:00:00 2001 From: Janis Date: Sat, 15 Apr 2023 00:19:01 +0200 Subject: [PATCH] dont unwrap --- src/lib.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index b5be32d..6dd39e7 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -22,6 +22,8 @@ use winapi::{ }, }; +use crate::error::ImageHelpError; + pub mod error { use std::ffi::NulError; @@ -39,6 +41,8 @@ pub mod error { pub enum ImageHelpError { #[error("Module could not be found")] ModuleNotFound, + #[error("inline null byte found")] + InlineNullByte, } impl Error { @@ -107,7 +111,8 @@ impl ImageHelp { ) -> Result<*const u8, error::Error> { 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 handle = LoadLibraryW(module_name_w.as_ptr()); @@ -161,8 +166,8 @@ impl ImageHelp { unsafe { std::mem::MaybeUninit::::zeroed().assume_init() }; sym_info.SizeOfStruct = std::mem::size_of::() as ULONG; - let symbol_name_utf16 = - widestring::U16CString::from_str(function_name).expect("unexpected null char"); + let symbol_name_utf16 = widestring::U16CString::from_str(function_name) + .map_err(|_| ImageHelpError::InlineNullByte)?; sym_info.MaxNameLen = 255; log::debug!("SymFromNameW.."); @@ -172,6 +177,8 @@ impl ImageHelp { != 0 })?; + log::debug!("asdf"); + Ok(sym_info.Address as *const u8) };