Mercurial > hg
diff rust/rhg/src/commands/cat.rs @ 48073:1e00834491a5
rhg-cat: fallback when detecting `.` or `..` path segments
We do not normalize paths correctly yet, so exclude the shortcuts.
Differential Revision: https://phab.mercurial-scm.org/D11378
author | Raphaël Gomès <rgomes@octobus.net> |
---|---|
date | Wed, 01 Sep 2021 17:40:25 +0200 |
parents | d919b0ca8449 |
children | 4a6fa6b6f079 |
line wrap: on
line diff
--- a/rust/rhg/src/commands/cat.rs Wed Sep 01 16:13:25 2021 +0200 +++ b/rust/rhg/src/commands/cat.rs Wed Sep 01 17:40:25 2021 +0200 @@ -46,8 +46,13 @@ let mut files = vec![]; for file in file_args.iter() { + let normalized = cwd.join(&file); // TODO: actually normalize `..` path segments etc? - let normalized = cwd.join(&file); + let dotted = normalized.components().any(|c| c.as_os_str() == ".."); + if file == &"." || dotted { + let message = "`..` or `.` path segment"; + return Err(CommandError::unsupported(message)); + } let stripped = normalized .strip_prefix(&working_directory) // TODO: error message for path arguments outside of the repo