Panic if PathBuf::set_extension would add a path separator
This is likely never intended and potentially a security vulnerability if it happens. I'd guess that it's mostly literal strings that are passed to this function in practice, so I'm guessing this doesn't break anyone. CC #125060
This commit is contained in:
parent
6be7b0c7d2
commit
700b3ea61b
2 changed files with 36 additions and 0 deletions
|
|
@ -1803,6 +1803,29 @@ fn test_windows_absolute() {
|
|||
assert_eq!(absolute(r"COM1").unwrap().as_os_str(), Path::new(r"\\.\COM1").as_os_str());
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[should_panic = "path separator"]
|
||||
fn test_extension_path_sep() {
|
||||
let mut path = PathBuf::from("path/to/file");
|
||||
path.set_extension("d/../../../../../etc/passwd");
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[should_panic = "path separator"]
|
||||
#[cfg(windows)]
|
||||
fn test_extension_path_sep_alternate() {
|
||||
let mut path = PathBuf::from("path/to/file");
|
||||
path.set_extension("d\\test");
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(not(windows))]
|
||||
fn test_extension_path_sep_alternate() {
|
||||
let mut path = PathBuf::from("path/to/file");
|
||||
path.set_extension("d\\test");
|
||||
assert_eq!(path, Path::new("path/to/file.d\\test"));
|
||||
}
|
||||
|
||||
#[bench]
|
||||
#[cfg_attr(miri, ignore)] // Miri isn't fast...
|
||||
fn bench_path_cmp_fast_path_buf_sort(b: &mut test::Bencher) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue