From 328ebdba9cde3bbf3c802c5884889128f5c538ca Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Thu, 2 Jun 2022 14:05:30 +0200 Subject: [PATCH] fix(sled): Encrypt saved user_ids --- crates/matrix-sdk-sled/src/state_store.rs | 36 +++++++++++++---------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/crates/matrix-sdk-sled/src/state_store.rs b/crates/matrix-sdk-sled/src/state_store.rs index b6c8a731f..a09d7cc47 100644 --- a/crates/matrix-sdk-sled/src/state_store.rs +++ b/crates/matrix-sdk-sled/src/state_store.rs @@ -461,14 +461,16 @@ impl SledStore { MembershipState::Join => { joined.insert( self.encode_key(JOINED_USER_ID, &key), - event.state_key().as_str(), + self.serialize_value(event.state_key()) + .map_err(ConflictableTransactionError::Abort)?, )?; invited.remove(self.encode_key(INVITED_USER_ID, &key))?; } MembershipState::Invite => { invited.insert( self.encode_key(INVITED_USER_ID, &key), - event.state_key().as_str(), + self.serialize_value(event.state_key()) + .map_err(ConflictableTransactionError::Abort)?, )?; joined.remove(self.encode_key(JOINED_USER_ID, &key))?; } @@ -552,7 +554,8 @@ impl SledStore { MembershipState::Join => { stripped_joined.insert( self.encode_key(STRIPPED_JOINED_USER_ID, &key), - event.state_key.as_str(), + self.serialize_value(&event.state_key) + .map_err(ConflictableTransactionError::Abort)? )?; stripped_invited .remove(self.encode_key(STRIPPED_INVITED_USER_ID, &key))?; @@ -560,7 +563,8 @@ impl SledStore { MembershipState::Invite => { stripped_invited.insert( self.encode_key(STRIPPED_INVITED_USER_ID, &key), - event.state_key.as_str(), + self.serialize_value(&event.state_key) + .map_err(ConflictableTransactionError::Abort)? )?; stripped_joined .remove(self.encode_key(STRIPPED_JOINED_USER_ID, &key))?; @@ -784,9 +788,9 @@ impl SledStore { let db = self.clone(); let key = self.encode_key(INVITED_USER_ID, room_id); spawn_blocking(move || { - stream::iter(db.invited_user_ids.scan_prefix(key).map(|u| { - UserId::parse(String::from_utf8_lossy(&u.map_err(StoreError::backend)?.1)) - .map_err(StoreError::Identifier) + stream::iter(db.invited_user_ids.scan_prefix(key).map(move |u| { + db.deserialize_value(&u.map_err(StoreError::backend)?.1) + .map_err(StoreError::backend) })) }) .await @@ -800,9 +804,9 @@ impl SledStore { let db = self.clone(); let key = self.encode_key(JOINED_USER_ID, room_id); spawn_blocking(move || { - stream::iter(db.joined_user_ids.scan_prefix(key).map(|u| { - UserId::parse(String::from_utf8_lossy(&u.map_err(StoreError::backend)?.1)) - .map_err(StoreError::Identifier) + stream::iter(db.joined_user_ids.scan_prefix(key).map(move |u| { + db.deserialize_value(&u.map_err(StoreError::backend)?.1) + .map_err(StoreError::backend) })) }) .await @@ -816,9 +820,9 @@ impl SledStore { let db = self.clone(); let key = self.encode_key(STRIPPED_INVITED_USER_ID, room_id); spawn_blocking(move || { - stream::iter(db.stripped_invited_user_ids.scan_prefix(key).map(|u| { - UserId::parse(String::from_utf8_lossy(&u.map_err(StoreError::backend)?.1)) - .map_err(StoreError::Identifier) + stream::iter(db.stripped_invited_user_ids.scan_prefix(key).map(move |u| { + db.deserialize_value(&u.map_err(StoreError::backend)?.1) + .map_err(StoreError::backend) })) }) .await @@ -832,9 +836,9 @@ impl SledStore { let db = self.clone(); let key = self.encode_key(STRIPPED_JOINED_USER_ID, room_id); spawn_blocking(move || { - stream::iter(db.stripped_joined_user_ids.scan_prefix(key).map(|u| { - UserId::parse(String::from_utf8_lossy(&u.map_err(StoreError::backend)?.1)) - .map_err(StoreError::Identifier) + stream::iter(db.stripped_joined_user_ids.scan_prefix(key).map(move |u| { + db.deserialize_value(&u.map_err(StoreError::backend)?.1) + .map_err(StoreError::backend) })) }) .await