From ad48d3972e53aa83fe623ea5cd1cb2f33e499eaf Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Fri, 17 Apr 2020 12:19:41 +0200 Subject: [PATCH] Error on invalid localpart --- src/lib.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 6c5d75ea..45bcf63d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -81,14 +81,15 @@ fn parse_id(id: &str, valid_sigils: &[char]) -> Result { validate_id(id, valid_sigils)?; let colon_idx = id.find(':').ok_or(Error::MissingDelimiter)?; + if colon_idx < 2 { + return Err(Error::InvalidLocalPart); + } + if !is_valid_server_name(&id[colon_idx + 1..]) { return Err(Error::InvalidServerName); } - match NonZeroU8::new(colon_idx as u8) { - Some(idx) => Ok(idx), - None => Err(Error::InvalidLocalPart), - } + Ok(NonZeroU8::new(colon_idx as u8).unwrap()) } /// Deserializes any type of id using the provided TryFrom implementation.