Fix TxHashSet file filter for Windows. (#2641) (#2643)

* Fix TxHashSet file filter for Windows.

* rustfmt

* Updating regexp

* Adding in test case
This commit is contained in:
Yeastplume 2019-02-28 21:39:38 +00:00 committed by GitHub
parent a080284563
commit 6fa137a4ff
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 4 deletions

View file

@ -1486,7 +1486,7 @@ fn expected_file(path: &Path) -> bool {
lazy_static! { lazy_static! {
static ref RE: Regex = Regex::new( static ref RE: Regex = Regex::new(
format!( format!(
r#"^({}|{}|{})(/pmmr_(hash|data|leaf|prun)\.bin(\.\w*)?)?$"#, r#"^({}|{}|{})((/|\\)pmmr_(hash|data|leaf|prun)\.bin(\.\w*)?)?$"#,
OUTPUT_SUBDIR, KERNEL_SUBDIR, RANGE_PROOF_SUBDIR OUTPUT_SUBDIR, KERNEL_SUBDIR, RANGE_PROOF_SUBDIR
) )
.as_str() .as_str()
@ -1648,7 +1648,7 @@ mod tests {
assert!(!expected_file(Path::new("kernels"))); assert!(!expected_file(Path::new("kernels")));
assert!(!expected_file(Path::new("xkernel"))); assert!(!expected_file(Path::new("xkernel")));
assert!(expected_file(Path::new("kernel"))); assert!(expected_file(Path::new("kernel")));
assert!(expected_file(Path::new("kernel/pmmr_data.bin"))); assert!(expected_file(Path::new("kernel\\pmmr_data.bin")));
assert!(expected_file(Path::new("kernel/pmmr_hash.bin"))); assert!(expected_file(Path::new("kernel/pmmr_hash.bin")));
assert!(expected_file(Path::new("kernel/pmmr_leaf.bin"))); assert!(expected_file(Path::new("kernel/pmmr_leaf.bin")));
assert!(expected_file(Path::new("kernel/pmmr_prun.bin"))); assert!(expected_file(Path::new("kernel/pmmr_prun.bin")));

View file

@ -73,8 +73,14 @@ where
for i in 0..archive.len() { for i in 0..archive.len() {
let mut file = archive.by_index(i)?; let mut file = archive.by_index(i)?;
let san_name = file.sanitized_name(); let san_name = file.sanitized_name();
if san_name.to_str().unwrap_or("") != file.name() || !expected(&san_name) { if san_name.to_str().unwrap_or("").replace("\\", "/") != file.name().replace("\\", "/")
info!("ignoring a suspicious file: {}", file.name()); || !expected(&san_name)
{
info!(
"ignoring a suspicious file: {}, got {:?}",
file.name(),
san_name.to_str()
);
continue; continue;
} }
let file_path = dest.join(san_name); let file_path = dest.join(san_name);