diff --git a/crates/pacdef_core/src/core.rs b/crates/pacdef_core/src/core.rs index 1fe0097..ecdc4cb 100644 --- a/crates/pacdef_core/src/core.rs +++ b/crates/pacdef_core/src/core.rs @@ -307,6 +307,18 @@ impl Pacdef { .context("getting groups from args")? .collect(); + // prevent group names that resolve to directories + for name in &new_group_names { + ensure!( + *name != ".", + crate::Error::InvalidGroupName(".".to_string()) + ); + ensure!( + *name != "..", + crate::Error::InvalidGroupName("..".to_string()) + ); + } + let paths: Vec<_> = new_group_names .into_iter() .map(|name| { @@ -317,9 +329,6 @@ impl Pacdef { .collect(); for file in &paths { - file.file_name() - .ok_or_else(|| crate::Error::InvalidGroupName("..".to_string()))?; - ensure!( !file.exists(), crate::Error::GroupAlreadyExists(file.clone())