don't crash on corrupted team names

This commit is contained in:
Robin Appelman 2023-03-26 14:53:34 +02:00
commit 6c669c74a5

View file

@ -160,12 +160,16 @@ pub fn subject_parser(input: &str) -> Result<(&str, RawSubject)> {
} }
} else if input.starts_with("Te") { } else if input.starts_with("Te") {
// Team "red" or Team "blue" // Team "red" or Team "blue"
if &input[6..7] == "r" { let first_byte = input.as_bytes().get(6).copied();
Ok((&input[11..], RawSubject::Team(Team::Red))) if first_byte == Some(b'r') {
} else if &input[6..7] == "b" { let rest = input.get(11..).ok_or(Error::Malformed)?;
Ok((&input[12..], RawSubject::Team(Team::Blue))) Ok((rest, RawSubject::Team(Team::Red)))
} else if first_byte == Some(b'b') {
let rest = input.get(12..).ok_or(Error::Malformed)?;
Ok((rest, RawSubject::Team(Team::Blue)))
} else { } else {
let (_, input) = split_once(&input[7..], b'"', 1)?; let rest = input.get(7..).ok_or(Error::Incomplete)?;
let (_, input) = split_once(rest, b'"', 1)?;
let input = skip(input, 1)?; let input = skip(input, 1)?;
Ok((input, RawSubject::Team(Team::Spectator))) Ok((input, RawSubject::Team(Team::Spectator)))
} }