mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-25 20:48:52 +03:00
Fix a a session with a higher minimum index being able to overwrite an older one
This commit is contained in:
parent
95a603fd62
commit
20c1ca2aae
1 changed files with 12 additions and 0 deletions
|
@ -374,6 +374,18 @@ Cache::saveInboundMegolmSession(const MegolmSessionIndex &index,
|
|||
const auto pickled = pickle<InboundSessionObject>(session.get(), SECRET);
|
||||
|
||||
auto txn = lmdb::txn::begin(env_);
|
||||
|
||||
std::string_view value;
|
||||
if (inboundMegolmSessionDb_.get(txn, key, value)) {
|
||||
auto oldSession = unpickle<InboundSessionObject>(std::string(value), SECRET);
|
||||
if (olm_inbound_group_session_first_known_index(session.get()) >
|
||||
olm_inbound_group_session_first_known_index(oldSession.get())) {
|
||||
nhlog::crypto()->warn(
|
||||
"Not storing inbound session with newer first known index");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
inboundMegolmSessionDb_.put(txn, key, pickled);
|
||||
txn.commit();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue