harden safe_name path validation

This commit is contained in:
Horizontal42 2026-07-29 14:14:49 +03:00
parent 1a12d75ec6
commit a6fc5b90f3

View file

@ -35,7 +35,18 @@ fn docs_dir(app: &AppHandle, dir: &Option<String>) -> PathBuf {
} }
fn safe_name(name: &str) -> bool { fn safe_name(name: &str) -> bool {
!name.is_empty() && !name.contains(['/', '\\', ':']) && !name.contains("..") let path = Path::new(name);
let mut components = path.components();
match components.next() {
Some(std::path::Component::Normal(_)) => {
if components.next().is_none() {
!name.contains(['/', '\\', ':'])
} else {
false
}
}
_ => false,
}
} }
#[tauri::command] #[tauri::command]