Skip to content

Commit 07d3337

Browse files
committed
Escape Pattern before being passed to glob
1 parent 39dce87 commit 07d3337

File tree

4 files changed

+15
-2
lines changed

4 files changed

+15
-2
lines changed

src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ use std::env;
9191
use std::path::PathBuf;
9292
use std::process::Command;
9393

94-
use glob::glob;
94+
use glob::{glob, Pattern};
9595
use lazy_static::lazy_static;
9696

9797
pub mod errors;
@@ -252,7 +252,7 @@ pub fn locate_file(file_name: &str) -> errors::Result<String> {
252252
// Find the JAVA_HOME
253253
let java_home = locate_java_home()?;
254254

255-
let query = format!("{}/**/{}", java_home, file_name);
255+
let query = format!("{}/**/{}", Pattern::escape(&java_home), file_name);
256256

257257
let paths_vec: Vec<String> = glob(&query)?
258258
.filter_map(Result::ok)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# test file for windows
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Test file for unix

tests/ensure-escaped.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
use java_locator::locate_jvm_dyn_library;
2+
3+
#[test]
4+
fn test_javahome_can_be_escaped() {
5+
println!("{:?}", std::env::current_dir());
6+
std::env::set_var("JAVA_HOME", "tests/[funky-javahome]/nested");
7+
assert_eq!(
8+
locate_jvm_dyn_library().expect("failed to located jvm library"),
9+
"tests/[funky-javahome]/nested/more*nested"
10+
);
11+
}

0 commit comments

Comments
 (0)