mirror of
https://github.com/cargo-bins/cargo-binstall.git
synced 2025-05-03 02:30:02 +00:00
Check source_file_path
to ensure it is valid (#421)
* Add new variant `BinstallError::DuplicateSourceFilePath` * Check `bin.source` in `collect_bin_files` * Add new variant `BinstallError::InvalidSourceFilePath` * Make sure generated source_file_path cannot access outside curdir * Add new variant `BinstallError::EmptySourceFilePath` * Ensure source_file_path is not empty Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
parent
e034d69e12
commit
3da5cb9d9c
3 changed files with 72 additions and 2 deletions
|
@ -1,4 +1,5 @@
|
|||
use std::{
|
||||
collections::BTreeSet,
|
||||
path::{Path, PathBuf},
|
||||
sync::Arc,
|
||||
};
|
||||
|
@ -356,6 +357,16 @@ fn collect_bin_files(
|
|||
.map(|p| bins::BinFile::from_product(&bin_data, p))
|
||||
.collect::<Result<Vec<_>, BinstallError>>()?;
|
||||
|
||||
let mut source_set = BTreeSet::new();
|
||||
|
||||
for bin in &bin_files {
|
||||
if !source_set.insert(&bin.source) {
|
||||
return Err(BinstallError::DuplicateSourceFilePath {
|
||||
path: bin.source.clone(),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Ok(bin_files)
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue