identifiers: Don't allow invalid characters in RoomVersionId

This commit is contained in:
HKalbasi 2023-02-12 02:05:33 -08:00 committed by GitHub
parent efc60d6a64
commit 270f8196bc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 0 deletions

View File

@ -368,4 +368,17 @@ mod tests {
RoomVersionId::try_from("io.ruma.1").expect("Failed to create RoomVersionId.")
);
}
#[test]
fn custom_room_id_invalid_character() {
assert!(serde_json::from_str::<RoomVersionId>(r#""io_ruma_1""#).is_err());
assert!(serde_json::from_str::<RoomVersionId>(r#""=""#).is_err());
assert!(serde_json::from_str::<RoomVersionId>(r#""/""#).is_err());
assert!(serde_json::from_str::<RoomVersionId>(r#"".""#).is_ok());
assert!(serde_json::from_str::<RoomVersionId>(r#""-""#).is_ok());
assert_eq!(
RoomVersionId::try_from("io_ruma_1").unwrap_err(),
IdParseError::InvalidCharacters
);
}
}

View File

@ -8,6 +8,8 @@ pub fn validate(s: &str) -> Result<(), Error> {
Err(Error::Empty)
} else if s.chars().count() > MAX_CODE_POINTS {
Err(Error::MaximumLengthExceeded)
} else if !s.chars().all(|c| c.is_alphanumeric() || ".-".contains(c)) {
Err(Error::InvalidCharacters)
} else {
Ok(())
}