diff options
| author | Emīls Piņķis <emils@mullvad.net> | 2018-05-23 16:10:26 +0200 |
|---|---|---|
| committer | Emīls Piņķis <emils@mullvad.net> | 2018-06-19 18:07:25 +0100 |
| commit | bcf6afff4ed7241aee09b2db0ac9d7f70c41315f (patch) | |
| tree | 27eb7ba83cfbff995d7a14987ec20544170e6f90 /mullvad-daemon/src | |
| parent | ac40302ffe9e7e0faec7d97e2a6a47fffd67674a (diff) | |
| download | mullvadvpn-bcf6afff4ed7241aee09b2db0ac9d7f70c41315f.tar.xz mullvadvpn-bcf6afff4ed7241aee09b2db0ac9d7f70c41315f.zip | |
Set permissions correctly for rpc_address_file on Windows
Diffstat (limited to 'mullvad-daemon/src')
| -rw-r--r-- | mullvad-daemon/src/rpc_address_file.rs | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/mullvad-daemon/src/rpc_address_file.rs b/mullvad-daemon/src/rpc_address_file.rs index c8b0f2beee..b3d3656a04 100644 --- a/mullvad-daemon/src/rpc_address_file.rs +++ b/mullvad-daemon/src/rpc_address_file.rs @@ -4,6 +4,9 @@ use std::path::{Path, PathBuf}; use mullvad_paths; +#[cfg(windows)] +extern crate winapi; + error_chain! { errors { UnknownFilePath { @@ -64,23 +67,20 @@ pub fn remove() -> Result<()> { } fn open_file(path: &Path) -> io::Result<File> { - let file = OpenOptions::new() - .write(true) - .truncate(true) - .create(true) - .open(path)?; - set_rpc_file_permissions(&file)?; - Ok(file) -} + let mut open_options = OpenOptions::new(); + open_options.write(true).truncate(true).create(true); -#[cfg(unix)] -fn set_rpc_file_permissions(file: &File) -> io::Result<()> { - use std::os::unix::fs::PermissionsExt; - file.set_permissions(PermissionsExt::from_mode(0o644)) -} + #[cfg(windows)] + { + use std::os::windows::fs::OpenOptionsExt; + open_options.share_mode(winapi::um::winnt::FILE_SHARE_READ); + } -#[cfg(windows)] -fn set_rpc_file_permissions(_file: &File) -> io::Result<()> { - // TODO(linus): Lock permissions correctly on Windows. - Ok(()) + let file = open_options.open(path)?; + #[cfg(unix)] + { + use std::os::unix::fs::PermissionsExt; + file.set_permissions(PermissionsExt::from_mode(0o644))?; + } + Ok(file) } |
