diff options
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) } |
