diff --git a/crates/matrix-sdk-store-encryption/CHANGELOG.md b/crates/matrix-sdk-store-encryption/CHANGELOG.md index d3fae753d53..ac64e342f3b 100644 --- a/crates/matrix-sdk-store-encryption/CHANGELOG.md +++ b/crates/matrix-sdk-store-encryption/CHANGELOG.md @@ -6,6 +6,13 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - ReleaseDate +### Bug Fixes + +- Remove the usage of an unwrap in the `StoreCipher::import_with_key` method. + This could have lead to panics if the second argument was an invalid + `StoreCipher` export. + ([#4506](https://github.com/matrix-org/matrix-rust-sdk/pull/4506)) + ## [0.9.0] - 2024-12-18 No notable changes in this release. diff --git a/crates/matrix-sdk-store-encryption/src/lib.rs b/crates/matrix-sdk-store-encryption/src/lib.rs index 78947d96af2..dea7e7e440c 100644 --- a/crates/matrix-sdk-store-encryption/src/lib.rs +++ b/crates/matrix-sdk-store-encryption/src/lib.rs @@ -334,7 +334,7 @@ impl StoreCipher { /// # anyhow::Ok(()) }; /// ``` pub fn import_with_key(key: &[u8; 32], encrypted: &[u8]) -> Result { - let encrypted: EncryptedStoreCipher = rmp_serde::from_slice(encrypted).unwrap(); + let encrypted: EncryptedStoreCipher = rmp_serde::from_slice(encrypted)?; if let KdfInfo::Pbkdf2ToChaCha20Poly1305 { .. } = encrypted.kdf_info { return Err(Error::KdfMismatch); @@ -903,6 +903,12 @@ mod tests { Ok(()) } + #[test] + fn test_importing_invalid_store_cipher_does_not_panic() { + // This used to panic, we're testing that we're getting a real error. + assert!(StoreCipher::import_with_key(&[0; 32], &[0; 64]).is_err()) + } + #[test] fn encrypting_values() -> Result<(), Error> { let event = json!({