Skip to content

Commit 7e1f031

Browse files
authored
detect capital R in rm command (#132)
* detect capital R in rm command * clippy fixes
1 parent da4c5b2 commit 7e1f031

12 files changed

+42
-24
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

shellfirm/Cargo.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
name = "shellfirm"
33
description = "`shellfirm` will intercept any risky patterns (default or defined by you) and prompt you a small challenge for double verification, kinda like a captcha for your terminal."
4-
version = "0.2.8"
4+
version = "0.2.9"
55
edition = "2021"
66
authors = ["Elad-Kaplan <[email protected]>"]
77
license = "MIT"
@@ -18,13 +18,13 @@ dirs = "4.0"
1818
anyhow = "1.0.51"
1919
serde = "1.0"
2020
serde_yaml = "0.8.21"
21-
serde_derive="1.0.131"
21+
serde_derive = "1.0.131"
2222
serde_regex = "1.1.0"
2323
regex = "1.5"
2424
rayon = "1.5.1"
2525
rand = "0.8.4"
26-
log="0.4.14"
27-
env_logger="0.9.0"
26+
log = "0.4.14"
27+
env_logger = "0.9.0"
2828
console = "^0.15.0"
2929
exitcode = "^1.1.2"
3030
lazy_static = "1.4.0"
@@ -46,4 +46,4 @@ cli = ["clap"]
4646

4747
[[bin]]
4848
name = "shellfirm"
49-
required-features = ["cli"]
49+
required-features = ["cli"]

shellfirm/build.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ fn main() -> Result<()> {
99

1010
let dest_checks_path = Path::new(&out_dir).join("all-checks.yaml");
1111
let dest_groups = Path::new(&out_dir).join("all_the_files.rs");
12-
let mut groups_names = File::create(&dest_groups)?;
12+
let mut groups_names = File::create(dest_groups)?;
1313

1414
writeln!(&mut groups_names, r##"["##,)?;
1515

@@ -26,7 +26,7 @@ fn main() -> Result<()> {
2626
.unwrap()
2727
.to_str()
2828
.expect("could not get file name");
29-
writeln!(&mut groups_names, r##""{name}","##, name = file_name)?;
29+
writeln!(&mut groups_names, r##""{file_name}","##)?;
3030
}
3131

3232
writeln!(&mut groups_names, r##"]"##,)?;

shellfirm/checks/fs.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
- from: fs
2-
test: 'rm\s{1,}(-r|-fr|-rf)\s*(\*|\.{1,}|/)\s*$'
2+
test: 'rm\s{1,}(-R|-r|-fR|-fr|-Rf|-rf)\s*(\*|\.{1,}|/)\s*$'
33
description: "You are going to delete everything in the path."
44
id: fs:recursively_delete
55
filters:

shellfirm/src/bin/cmd/config.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ pub fn run_update_groups(
6464
}),
6565
Err(e) => Ok(shellfirm::CmdExit {
6666
code: exitcode::CONFIG,
67-
message: Some(format!("Could not update checks group. error: {}", e)),
67+
message: Some(format!("Could not update checks group. error: {e}")),
6868
}),
6969
}
7070
}
@@ -77,7 +77,7 @@ pub fn run_reset(config: &Config, force_selection: Option<usize>) -> shellfirm::
7777
},
7878
Err(e) => shellfirm::CmdExit {
7979
code: exitcode::CONFIG,
80-
message: Some(format!("reset settings error: {:?}", e)),
80+
message: Some(format!("reset settings error: {e:?}")),
8181
},
8282
}
8383
}
@@ -97,7 +97,7 @@ pub fn run_challenge(config: &Config, challenge: Option<Challenge>) -> Result<sh
9797
}),
9898
Err(e) => Ok(shellfirm::CmdExit {
9999
code: exitcode::CONFIG,
100-
message: Some(format!("change challenge error: {:?}", e)),
100+
message: Some(format!("change challenge error: {e:?}")),
101101
}),
102102
}
103103
}
@@ -131,7 +131,7 @@ pub fn run_ignore(
131131
}),
132132
Err(e) => Ok(shellfirm::CmdExit {
133133
code: exitcode::CONFIG,
134-
message: Some(format!("update pattern ignore errors: {:?}", e)),
134+
message: Some(format!("update pattern ignore errors: {e:?}")),
135135
}),
136136
}
137137
}
@@ -165,7 +165,7 @@ pub fn run_deny(
165165
}),
166166
Err(e) => Ok(shellfirm::CmdExit {
167167
code: exitcode::CONFIG,
168-
message: Some(format!("update pattern ignore errors: {:?}", e)),
168+
message: Some(format!("update pattern ignore errors: {e:?}")),
169169
}),
170170
}
171171
}
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
---
22
source: shellfirm/src/bin/cmd/command.rs
3-
expression: "run_pre_command(\"rm -rf /\", &settings, &settings.get_active_checks().unwrap(),\n true)"
3+
expression: "execute(\"rm -rf /\", &settings, &settings.get_active_checks().unwrap(), true)"
44
---
55
Ok(
66
CmdExit {
77
code: 0,
88
message: Some(
9-
"---\n- id: \"fs:recursively_delete\"\n test: \"rm\\\\s{1,}(-r|-fr|-rf)\\\\s*(\\\\*|\\\\.{1,}|/)\\\\s*$\"\n description: You are going to delete everything in the path.\n from: fs\n challenge: Math\n filters:\n IsExists: \"3\"\n",
9+
"---\n- id: \"fs:recursively_delete\"\n test: \"rm\\\\s{1,}(-R|-r|-fR|-fr|-Rf|-rf)\\\\s*(\\\\*|\\\\.{1,}|/)\\\\s*$\"\n description: You are going to delete everything in the path.\n from: fs\n challenge: Math\n filters:\n IsExists: \"3\"\n",
1010
),
1111
},
1212
)

shellfirm/src/bin/shellfirm.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ fn main() {
2424
let config = match Config::new(None) {
2525
Ok(config) => config,
2626
Err(err) => {
27-
eprintln!("Loading config error: {}", err);
27+
eprintln!("Loading config error: {err}");
2828
exit(1)
2929
}
3030
};
@@ -51,7 +51,7 @@ fn main() {
5151
let checks = match settings.get_active_checks() {
5252
Ok(c) => c,
5353
Err(e) => {
54-
eprintln!("Could not load checks. err: Error: {}", e);
54+
eprintln!("Could not load checks. err: Error: {e}");
5555
exit(1)
5656
}
5757
};

shellfirm/src/checks.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ pub fn challenge(
8383
}
8484

8585
for description in descriptions {
86-
eprintln!("* {}", description);
86+
eprintln!("* {description}");
8787
}
8888
eprintln!();
8989

shellfirm/src/config.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ pub struct Settings {
5555
}
5656

5757
impl fmt::Display for Challenge {
58-
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
58+
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
5959
match self {
6060
Self::Math => write!(f, "Math"),
6161
Self::Enter => write!(f, "Enter"),
@@ -103,7 +103,7 @@ impl Config {
103103
// compatibility if the folder $HOME/.shellfirm exists, shillfirm
104104
// continue work with that folder. If the folder does not exists, the default
105105
// use config dir
106-
let homedir = p.join(format!(".{}", package_name));
106+
let homedir = p.join(format!(".{package_name}"));
107107
let conf_dir = dirs::config_dir().unwrap_or_else(|| homedir.clone());
108108
if homedir.is_dir() {
109109
homedir

shellfirm/src/prompt.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ pub fn math_challenge() -> bool {
4040
if answer == expected_answer {
4141
break;
4242
}
43-
eprintln!("{}", WRONG_ANSWER);
43+
eprintln!("{WRONG_ANSWER}");
4444
}
4545
true
4646
}
@@ -53,7 +53,7 @@ pub fn enter_challenge() -> bool {
5353
if answer == "\n" {
5454
break;
5555
}
56-
eprintln!("{}", WRONG_ANSWER);
56+
eprintln!("{WRONG_ANSWER}");
5757
}
5858
true
5959
}
@@ -65,7 +65,7 @@ pub fn yes_challenge() -> bool {
6565
if show_stdin_prompt().trim() == "yes" {
6666
break;
6767
}
68-
eprintln!("{}", WRONG_ANSWER);
68+
eprintln!("{WRONG_ANSWER}");
6969
}
7070
true
7171
}

shellfirm/tests/checks/fs-recursively_delete.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,7 @@
1313
description: folder not found
1414
- test: rmm -rf /
1515
description: folder not found
16+
- test: rm -Rf /
17+
description: Handle capital R
18+
- test: rm -FR /
19+
description: invalid command

shellfirm/tests/snapshots/checks__fs-recursively_delete.yaml.snap

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,4 +60,18 @@ expression: test_file_results
6060
check_detection_ids: [],
6161
test_description: "folder not found",
6262
},
63+
TestSensitivePatternsResult {
64+
file_path: "fs-recursively_delete.yaml",
65+
test: "rm -Rf /",
66+
check_detection_ids: [
67+
"fs:recursively_delete",
68+
],
69+
test_description: "Handle capital R",
70+
},
71+
TestSensitivePatternsResult {
72+
file_path: "fs-recursively_delete.yaml",
73+
test: "rm -FR /",
74+
check_detection_ids: [],
75+
test_description: "invalid command",
76+
},
6377
]

0 commit comments

Comments
 (0)