Skip to content

Commit

Permalink
Merge pull request #3314 from jfinkels/timeout-return-125-invalid-args
Browse files Browse the repository at this point in the history
timeout: return 125 on invalid time interval args
  • Loading branch information
sylvestre authored Mar 27, 2022
2 parents 9a0ef9a + b34685f commit e1f8893
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 4 deletions.
12 changes: 8 additions & 4 deletions src/uu/timeout/src/timeout.rs
Original file line number Diff line number Diff line change
Expand Up @@ -68,14 +68,18 @@ impl Config {
_ => uucore::signals::signal_by_name_or_value("TERM").unwrap(),
};

let kill_after = options
.value_of(options::KILL_AFTER)
.map(|time| uucore::parse_time::from_str(time).unwrap());
let kill_after = match options.value_of(options::KILL_AFTER) {
None => None,
Some(kill_after) => match uucore::parse_time::from_str(kill_after) {
Ok(k) => Some(k),
Err(err) => return Err(UUsageError::new(ExitStatus::TimeoutFailed.into(), err)),
},
};

let duration =
match uucore::parse_time::from_str(options.value_of(options::DURATION).unwrap()) {
Ok(duration) => duration,
Err(err) => return Err(UUsageError::new(1, err)),
Err(err) => return Err(UUsageError::new(ExitStatus::TimeoutFailed.into(), err)),
};

let preserve_status: bool = options.is_present(options::PRESERVE_STATUS);
Expand Down
10 changes: 10 additions & 0 deletions tests/by-util/test_timeout.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,16 @@ fn test_invalid_time_interval() {
new_ucmd!()
.args(&["xyz", "sleep", "0"])
.fails()
.code_is(125)
.usage_error("invalid time interval 'xyz'");
}

#[test]
fn test_invalid_kill_after() {
new_ucmd!()
.args(&["-k", "xyz", "1", "sleep", "0"])
.fails()
.code_is(125)
.usage_error("invalid time interval 'xyz'");
}

Expand Down

0 comments on commit e1f8893

Please sign in to comment.