Skip to content

Commit 467e146

Browse files
committed
see if this makes a difference on windows (#386)
1 parent d6c6ec6 commit 467e146

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

git-sec/src/lib.rs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ pub mod identity {
5252
use std::borrow::Cow;
5353
use std::path::Path;
5454

55-
fn err(msg: &str) -> std::io::Error {
56-
std::io::Error::new(std::io::ErrorKind::Other, msg)
55+
fn err(msg: impl Into<String>) -> std::io::Error {
56+
std::io::Error::new(std::io::ErrorKind::Other, msg.into())
5757
}
5858

5959
pub fn is_path_owned_by_current_user(path: Cow<'_, Path>) -> std::io::Result<bool> {
@@ -75,12 +75,12 @@ pub mod identity {
7575
.map_err(|_| err("Failed to open process token"))?;
7676

7777
let mut len = 0_u32;
78-
if Security::GetTokenInformation(&handle, Security::TokenUser, std::ptr::null_mut(), 0, &mut len)
78+
if !Security::GetTokenInformation(handle, Security::TokenUser, std::ptr::null_mut(), 0, &mut len)
7979
.as_bool()
8080
{
8181
let mut token_user = Security::TOKEN_USER::default();
8282
if Security::GetTokenInformation(
83-
&handle,
83+
handle,
8484
Security::TokenUser,
8585
&mut token_user as *mut _ as *mut std::ffi::c_void,
8686
len,
@@ -94,6 +94,7 @@ pub mod identity {
9494
if Security::IsValidSid(token_user.User.Sid).as_bool() {
9595
use std::os::windows::ffi::OsStrExt;
9696
let mut wide_path: Vec<_> = path.as_ref().as_os_str().encode_wide().collect();
97+
wide_path.push(0);
9798
// err = GetNamedSecurityInfoW(wpath, SE_FILE_OBJECT,
9899
// OWNER_SECURITY_INFORMATION |
99100
// DACL_SECURITY_INFORMATION,
@@ -113,16 +114,16 @@ pub mod identity {
113114
if res == ERROR_SUCCESS.0 && Security::IsValidSid(path_sid).as_bool() {
114115
is_owned = Security::EqualSid(path_sid, token_user.User.Sid).as_bool();
115116
} else {
116-
err_msg = "couldn't get owner for path or it wasn't valid".into();
117+
err_msg = format!("couldn't get owner for path or it wasn't valid: {}", res).into();
117118
}
118119
} else {
119-
err_msg = "owner id of current process wasn't set or valid".into();
120+
err_msg = String::from("owner id of current process wasn't set or valid").into();
120121
}
121122
} else {
122-
err_msg = "Could not get information about the token user".into();
123+
err_msg = String::from("Could not get information about the token user").into();
123124
}
124125
} else {
125-
err_msg = "Could not get token information for length of token user".into();
126+
err_msg = String::from("Could not get token information for length of token user").into();
126127
}
127128
CloseHandle(handle);
128129
if !descriptor.is_invalid() {

0 commit comments

Comments
 (0)