mirror of
https://github.com/matrix-org/matrix-rust-sdk.git
synced 2026-08-07 05:22:31 -04:00
crypto: Don't return a result when receiving a ready event
Ready events might be invalid but we might receive a valid one later on, e.g. someone is trying to disrupt our verification, so just ignore invalid ready events.
This commit is contained in:
1 parent
073b91fa62
commit
df1fe0ebc4
2 files changed
+5
-9
No files matched your search
@@ -272,8 +272,7 @@ impl VerificationMachine {
|
|||||||
AnyVerificationContent::Ready(c) => {
|
AnyVerificationContent::Ready(c) => {
|
||||||
if let Some(request) = self.requests.get(flow_id.as_str()) {
|
if let Some(request) = self.requests.get(flow_id.as_str()) {
|
||||||
if request.flow_id() == &flow_id {
|
if request.flow_id() == &flow_id {
|
||||||
// TODO remove this unwrap.
|
request.receive_ready(event.sender(), c);
|
||||||
request.receive_ready(event.sender(), c).unwrap();
|
|
||||||
} else {
|
} else {
|
||||||
flow_id_mismatch();
|
flow_id_mismatch();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -301,15 +301,12 @@ impl VerificationRequest {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(clippy::unnecessary_wraps)]
|
pub(crate) fn receive_ready(&self, sender: &UserId, content: &ReadyContent) {
|
||||||
pub(crate) fn receive_ready(&self, sender: &UserId, content: &ReadyContent) -> Result<(), ()> {
|
|
||||||
let mut inner = self.inner.lock().unwrap();
|
let mut inner = self.inner.lock().unwrap();
|
||||||
|
|
||||||
if let InnerRequest::Created(s) = &*inner {
|
if let InnerRequest::Created(s) = &*inner {
|
||||||
*inner = InnerRequest::Ready(s.clone().into_ready(sender, content));
|
*inner = InnerRequest::Ready(s.clone().into_ready(sender, content));
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) async fn receive_start(
|
pub(crate) async fn receive_start(
|
||||||
@@ -932,7 +929,7 @@ mod test {
|
|||||||
let content: OutgoingContent = alice_request.accept().unwrap().into();
|
let content: OutgoingContent = alice_request.accept().unwrap().into();
|
||||||
let content = ReadyContent::try_from(&content).unwrap();
|
let content = ReadyContent::try_from(&content).unwrap();
|
||||||
|
|
||||||
bob_request.receive_ready(&alice_id(), &content).unwrap();
|
bob_request.receive_ready(&alice_id(), &content);
|
||||||
|
|
||||||
assert!(bob_request.is_ready());
|
assert!(bob_request.is_ready());
|
||||||
assert!(alice_request.is_ready());
|
assert!(alice_request.is_ready());
|
||||||
@@ -985,7 +982,7 @@ mod test {
|
|||||||
let content: OutgoingContent = alice_request.accept().unwrap().into();
|
let content: OutgoingContent = alice_request.accept().unwrap().into();
|
||||||
let content = ReadyContent::try_from(&content).unwrap();
|
let content = ReadyContent::try_from(&content).unwrap();
|
||||||
|
|
||||||
bob_request.receive_ready(&alice_id(), &content).unwrap();
|
bob_request.receive_ready(&alice_id(), &content);
|
||||||
|
|
||||||
assert!(bob_request.is_ready());
|
assert!(bob_request.is_ready());
|
||||||
assert!(alice_request.is_ready());
|
assert!(alice_request.is_ready());
|
||||||
@@ -1043,7 +1040,7 @@ mod test {
|
|||||||
let content: OutgoingContent = alice_request.accept().unwrap().into();
|
let content: OutgoingContent = alice_request.accept().unwrap().into();
|
||||||
let content = ReadyContent::try_from(&content).unwrap();
|
let content = ReadyContent::try_from(&content).unwrap();
|
||||||
|
|
||||||
bob_request.receive_ready(&alice_id(), &content).unwrap();
|
bob_request.receive_ready(&alice_id(), &content);
|
||||||
|
|
||||||
assert!(bob_request.is_ready());
|
assert!(bob_request.is_ready());
|
||||||
assert!(alice_request.is_ready());
|
assert!(alice_request.is_ready());
|
||||||
|
|||||||
Reference in new issue
Block a user