diff --git a/crates/ruma-common/src/canonical_json.rs b/crates/ruma-common/src/canonical_json.rs index 1529c6ef..96aba87f 100644 --- a/crates/ruma-common/src/canonical_json.rs +++ b/crates/ruma-common/src/canonical_json.rs @@ -138,12 +138,11 @@ pub fn to_canonical_value( /// * `object` contains a field called `signatures` that is not a JSON object. /// * `object` is missing the `type` field or the field is not a JSON string. pub fn redact( - object: &CanonicalJsonObject, + mut object: CanonicalJsonObject, version: &RoomVersionId, ) -> Result { - let mut val = object.clone(); - redact_in_place(&mut val, version)?; - Ok(val) + redact_in_place(&mut object, version)?; + Ok(object) } /// Redacts an event using the rules specified in the Matrix client-server specification. diff --git a/crates/ruma-signatures/src/functions.rs b/crates/ruma-signatures/src/functions.rs index 7e04c5a8..2f57305a 100644 --- a/crates/ruma-signatures/src/functions.rs +++ b/crates/ruma-signatures/src/functions.rs @@ -321,7 +321,7 @@ pub fn reference_hash( value: &CanonicalJsonObject, version: &RoomVersionId, ) -> Result { - let redacted_value = redact(value, version)?; + let redacted_value = redact(value.clone(), version)?; let json = canonical_json_with_fields_to_remove(&redacted_value, REFERENCE_HASH_FIELDS_TO_REMOVE)?; @@ -458,7 +458,7 @@ where _ => return Err(JsonError::not_of_type("hashes", JsonType::Object)), }; - let mut redacted = redact(object, version)?; + let mut redacted = redact(object.clone(), version)?; sign_json(entity_id, key_pair, &mut redacted)?; @@ -539,7 +539,7 @@ pub fn verify_event( object: &CanonicalJsonObject, version: &RoomVersionId, ) -> Result { - let redacted = redact(object, version)?; + let redacted = redact(object.clone(), version)?; let hash = match object.get("hashes") { Some(hashes_value) => match hashes_value {