Fix crash on invalid utf8 in decrypted events

This commit is contained in:
Nicolas Werner 2021-07-26 18:57:46 +02:00
parent e8e48305c8
commit 6222ae88ce
No known key found for this signature in database
GPG key ID: C8D75E610773F2D9

View file

@ -1048,6 +1048,7 @@ decryptEvent(const MegolmSessionIndex &index,
return {DecryptionErrorCode::DecryptionFailed, e.what(), std::nullopt}; return {DecryptionErrorCode::DecryptionFailed, e.what(), std::nullopt};
} }
try {
// Add missing fields for the event. // Add missing fields for the event.
json body = json::parse(msg_str); json body = json::parse(msg_str);
body["event_id"] = event.event_id; body["event_id"] = event.event_id;
@ -1059,13 +1060,12 @@ decryptEvent(const MegolmSessionIndex &index,
mtx::common::add_relations(body["content"], event.content.relations); mtx::common::add_relations(body["content"], event.content.relations);
mtx::events::collections::TimelineEvent te; mtx::events::collections::TimelineEvent te;
try {
mtx::events::collections::from_json(body, te); mtx::events::collections::from_json(body, te);
return {std::nullopt, std::nullopt, std::move(te.data)};
} catch (std::exception &e) { } catch (std::exception &e) {
return {DecryptionErrorCode::ParsingFailed, e.what(), std::nullopt}; return {DecryptionErrorCode::ParsingFailed, e.what(), std::nullopt};
} }
return {std::nullopt, std::nullopt, std::move(te.data)};
} }
crypto::Trust crypto::Trust