Skip to content

Commit 21f4e57

Browse files
author
lynnux
committed
let return err if not got QueryFullProcessImageNameA
1 parent e0c6b0e commit 21f4e57

File tree

2 files changed

+15
-26
lines changed

2 files changed

+15
-26
lines changed

src/symbolize/libbacktrace.rs

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -388,36 +388,30 @@ unsafe fn init_state() -> *mut bt::backtrace_state {
388388
}
389389
let ptrQueryFullProcessImageNameA =
390390
GetProcAddress(dll, b"QueryFullProcessImageNameA\0".as_ptr() as *const _) as usize;
391-
let mut len: u32;
392391
if ptrQueryFullProcessImageNameA == 0
393392
{
394-
len = GetModuleFileNameA(0 as HMODULE, buf.as_mut_ptr(), buf.len() as u32);
395-
}
396-
else
397-
{
398-
use core::mem;
399-
let p1 = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, GetCurrentProcessId());
400-
len = buf.len() as u32;
401-
let pfnQueryFullProcessImageNameA : extern "system" fn(
402-
hProcess: HANDLE,
403-
dwFlags: DWORD,
404-
lpExeName: LPSTR,
405-
lpdwSize: PDWORD,
406-
) -> BOOL = mem::transmute(ptrQueryFullProcessImageNameA);
407-
408-
let rc = pfnQueryFullProcessImageNameA(p1, 0, buf.as_mut_ptr(), &mut len);
409-
CloseHandle(p1);
410-
if rc == 0 {
411-
return Err(())
412-
}
393+
return Err(());
413394
}
395+
use core::mem;
396+
let p1 = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, GetCurrentProcessId());
397+
let mut len = buf.len() as u32;
398+
let pfnQueryFullProcessImageNameA : extern "system" fn(
399+
hProcess: HANDLE,
400+
dwFlags: DWORD,
401+
lpExeName: LPSTR,
402+
lpdwSize: PDWORD,
403+
) -> BOOL = mem::transmute(ptrQueryFullProcessImageNameA);
404+
405+
let rc = pfnQueryFullProcessImageNameA(p1, 0, buf.as_mut_ptr(), &mut len);
406+
CloseHandle(p1);
407+
414408
// We want to return a slice that is nul-terminated, so if
415409
// everything was filled in and it equals the total length
416410
// then equate that to failure.
417411
//
418412
// Otherwise when returning success make sure the nul byte is
419413
// included in the slice.
420-
if len == buf.len() as u32 {
414+
if rc == 0 || len == buf.len() as u32 {
421415
Err(())
422416
} else {
423417
assert_eq!(buf[len as usize], 0);

src/windows.rs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -351,11 +351,6 @@ ffi! {
351351
) -> HANDLE;
352352
pub fn GetCurrentProcessId() -> DWORD;
353353
pub fn CloseHandle(h: HANDLE) -> BOOL;
354-
pub fn GetModuleFileNameA(
355-
hModule: HMODULE,
356-
lpFilename: LPSTR,
357-
nSize: DWORD)
358-
-> DWORD;
359354
pub fn CreateFileA(
360355
lpFileName: LPCSTR,
361356
dwDesiredAccess: DWORD,

0 commit comments

Comments
 (0)