mirror of
https://github.com/arabianq/pipewire-soundpad.git
synced 2026-06-19 12:13:32 +00:00
🔒 Fix insecure fallback directory and secure file creation
The daemon's fallback runtime directory `get_runtime_dir()` was hardcoded to `/run/pwsp`, creating a risk of shared, insecure access in multi-user systems. This commit secures the fallback logic by: 1. Creating a user-specific temporary directory (`/tmp/pwsp-$UID`). 2. Ensuring directory creation happens atomically with `0o700` permissions using `std::fs::DirBuilder`. 3. Validating the fallback directory strictly (checking UID, 0o700 permissions, and symlink status) if it already exists to mitigate symlink attacks. 4. Using safe `rustix::process::geteuid()` for robust cross-platform UID extraction, avoiding `unsafe` blocks. 5. Fixing `is_daemon_running` and locking logic to use `fs::OpenOptions` instead of `fs::File::create` to prevent accidental file truncation on active lock files. Co-authored-by: arabianq <55220741+arabianq@users.noreply.github.com>
This commit is contained in:
Generated
+1
-1
@@ -3172,12 +3172,12 @@ dependencies = [
|
|||||||
"egui_material_icons",
|
"egui_material_icons",
|
||||||
"evdev",
|
"evdev",
|
||||||
"itertools 0.14.0",
|
"itertools 0.14.0",
|
||||||
"libc",
|
|
||||||
"opener",
|
"opener",
|
||||||
"pipewire",
|
"pipewire",
|
||||||
"rfd",
|
"rfd",
|
||||||
"rodio",
|
"rodio",
|
||||||
"rust-i18n",
|
"rust-i18n",
|
||||||
|
"rustix 1.1.4",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"sys-locale",
|
"sys-locale",
|
||||||
|
|||||||
+1
-1
@@ -62,7 +62,7 @@ eframe = { version = "0.34.2", default-features = false, features = [
|
|||||||
egui_extras = "0.34.1"
|
egui_extras = "0.34.1"
|
||||||
egui_material_icons = "0.6.0"
|
egui_material_icons = "0.6.0"
|
||||||
egui_dnd = "0.15.0"
|
egui_dnd = "0.15.0"
|
||||||
libc = "0.2.186"
|
rustix = { version = "1.1.4", features = ["process"] }
|
||||||
|
|
||||||
[[bin]]
|
[[bin]]
|
||||||
name = "pwsp-daemon"
|
name = "pwsp-daemon"
|
||||||
|
|||||||
+1
-1
@@ -38,7 +38,7 @@ pub fn get_daemon_config() -> DaemonConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_current_uid() -> u32 {
|
fn get_current_uid() -> u32 {
|
||||||
unsafe { libc::geteuid() }
|
rustix::process::geteuid().as_raw()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_runtime_dir() -> PathBuf {
|
pub fn get_runtime_dir() -> PathBuf {
|
||||||
|
|||||||
Reference in New Issue
Block a user