matrix-fuzz

git clone git://archive.git.mtrnord.blog/MTRNord/matrix-fuzz.git
Log | Files | Refs | README | LICENSE

commit e7e5d265bafd3cdc281ec92da0614f0367165ecc
parent d888faed5a4a5004a1fcdb7efb071ca840254b3e
Author: MTRNord <mtrnord1@gmail.com>
Date:   Sun, 14 Aug 2022 03:09:42 +0200

Reduce false negatives

Diffstat:
Msrc/lib.rs | 7+++----
Msrc/types/create_room.rs | 22++++++++++++++++++----
2 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/src/lib.rs b/src/lib.rs @@ -79,7 +79,7 @@ mod tests { fn null_in_room() { let content = CreateRoomMagicJSON { name: Some("a".to_string()), - room_alias_name: Some("\0".to_string()), + //room_alias_name: Some("\0".to_string()), visibility: Some("a".to_string()), is_direct: Some(false), topic: Some("c".to_string()), @@ -219,13 +219,12 @@ mod tests { } } - // FIXME: We probably should set it to null and not do a false positive // HACK due to https://github.com/matrix-org/synapse/issues/13510 - if let Some(room_alias_name) = &json_data.room_alias_name { + /*if let Some(room_alias_name) = &json_data.room_alias_name { if room_alias_name.contains('\0') { json_data.room_alias_name = Some(room_alias_name.replace('\0', "")); } - } + }*/ // HACK due to NUL in type or state_key json_data .initial_state diff --git a/src/types/create_room.rs b/src/types/create_room.rs @@ -15,6 +15,18 @@ fn creation_content_skip(value: &Value) -> bool { || value.is_u64() } +fn room_version_skip(value: &Option<String>) -> bool { + if value.is_none() { + return true; + } + if let Some(ref value) = value { + if value.is_empty() { + return true; + } + } + false +} + #[derive(Clone, Serialize, Deserialize, Debug, Default, DefaultMutator)] pub struct CreateRoomMagicJSON { #[serde(skip_serializing_if = "creation_content_skip")] @@ -34,10 +46,12 @@ pub struct CreateRoomMagicJSON { pub name: Option<String>, #[serde(skip_serializing_if = "Option::is_none")] pub preset: Option<String>, - #[serde(skip_serializing_if = "Option::is_none")] - pub room_alias_name: Option<String>, - #[serde(skip_serializing_if = "Option::is_none")] - pub room_version: Option<String>, + // Disabled to have more fuzz results + //#[serde(skip_serializing_if = "Option::is_none")] + //pub room_alias_name: Option<String>, + // Disabled to have more fuzz results + //#[serde(skip_serializing_if = "room_version_skip")] + //pub room_version: Option<String>, #[serde(skip_serializing_if = "Option::is_none")] pub topic: Option<String>, #[serde(skip_serializing_if = "Option::is_none")]