Skip to content

Commit 7b7cf79

Browse files
committed
refactor: use OwnedHandle from standard library
1 parent 4e4495c commit 7b7cf79

File tree

1 file changed

+6
-12
lines changed

1 file changed

+6
-12
lines changed

src/privilege/mod.rs

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
use std::os::windows::io::{FromRawHandle, OwnedHandle};
2+
13
use win32_ecoqos::windows_result;
24
use windows::Win32::{
3-
Foundation::{CloseHandle, HANDLE, LUID},
5+
Foundation::{HANDLE, LUID},
46
Security::{
57
AdjustTokenPrivileges, GetTokenInformation, LUID_AND_ATTRIBUTES, LookupPrivilegeValueW,
68
SE_DEBUG_NAME, SE_PRIVILEGE_ENABLED, TOKEN_ADJUST_PRIVILEGES, TOKEN_ELEVATION,
@@ -57,23 +59,15 @@ fn enable_se_debug(tokenhandle: HANDLE) -> windows_result::Result<()> {
5759
}
5860

5961
pub fn try_enable_se_debug_privilege() -> windows_result::Result<bool> {
60-
let is_admin;
61-
6262
unsafe {
6363
let processhandle = GetCurrentProcess();
6464
let mut tokenhandle = HANDLE(std::ptr::null_mut());
6565
let desiredaccess = TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY;
6666

6767
OpenProcessToken(processhandle, desiredaccess, &mut tokenhandle as _)?;
6868

69-
is_admin = is_elevated(tokenhandle).inspect_err(|_| {
70-
_ = CloseHandle(tokenhandle);
71-
})?;
72-
73-
let enable = enable_se_debug(tokenhandle);
74-
_ = CloseHandle(tokenhandle);
75-
enable?;
69+
let _defer = OwnedHandle::from_raw_handle(tokenhandle.0);
70+
enable_se_debug(tokenhandle)?;
71+
is_elevated(tokenhandle)
7672
}
77-
78-
Ok(is_admin)
7973
}

0 commit comments

Comments
 (0)