Skip to content

Commit

Permalink
Merge pull request #7206 from cakebaker/kill_no_lowercase_signal_name…
Browse files Browse the repository at this point in the history
…s_with_hyphen

kill: don't allow lowercase signal names with '-'
  • Loading branch information
sylvestre authored Jan 24, 2025
2 parents 943b446 + 2668c98 commit 0fd9a29
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 4 deletions.
4 changes: 4 additions & 0 deletions src/uu/kill/src/kill.rs
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,10 @@ fn handle_obsolete(args: &mut Vec<String>) -> Option<usize> {
// Old signal can only be in the first argument position
let slice = args[1].as_str();
if let Some(signal) = slice.strip_prefix('-') {
// With '-', a signal name must start with an uppercase char
if signal.chars().next().is_some_and(|c| c.is_lowercase()) {
return None;
}
// Check if it is a valid signal
let opt_signal = signal_by_name_or_value(signal);
if opt_signal.is_some() {
Expand Down
20 changes: 16 additions & 4 deletions tests/by-util/test_kill.rs
Original file line number Diff line number Diff line change
Expand Up @@ -198,12 +198,24 @@ fn test_kill_with_signal_number_old_form() {

#[test]
fn test_kill_with_signal_name_old_form() {
let mut target = Target::new();
for arg in ["-Kill", "-KILL"] {
let mut target = Target::new();
new_ucmd!()
.arg(arg)
.arg(format!("{}", target.pid()))
.succeeds();
assert_eq!(target.wait_for_signal(), Some(libc::SIGKILL));
}
}

#[test]
fn test_kill_with_lower_case_signal_name_old_form() {
let target = Target::new();
new_ucmd!()
.arg("-KILL")
.arg("-kill")
.arg(format!("{}", target.pid()))
.succeeds();
assert_eq!(target.wait_for_signal(), Some(libc::SIGKILL));
.fails()
.stderr_contains("unexpected argument");
}

#[test]
Expand Down

0 comments on commit 0fd9a29

Please sign in to comment.