Return error early if seconds part of timestamp is invalid (#6193)

Signed-off-by: nibon7 <nibon7@163.com>
This commit is contained in:
nibon7
2022-07-31 20:32:16 +08:00
committed by GitHub
parent dd2a0e35f4
commit 26caf7e1b2
2 changed files with 93 additions and 1 deletions

View File

@ -121,7 +121,15 @@ impl Command for Touch {
// Checks for the seconds stamp and removes the '.' delimiter if any
let (val, has_sec): (String, bool) = match stamp.split_once('.') {
Some((dtime, sec)) => (format!("{}{}", dtime, sec), true),
Some((dtime, sec)) => match sec.parse::<u8>() {
Ok(sec) if sec < 60 => (format!("{}{}", dtime, sec), true),
_ => {
return Err(ShellError::UnsupportedInput(
"input has an invalid timestamp".to_string(),
span,
))
}
},
None => (stamp.to_string(), false),
};