mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-25 12:38:48 +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);
|
const auto pickled = pickle<InboundSessionObject>(session.get(), SECRET);
|
||||||
|
|
||||||
auto txn = lmdb::txn::begin(env_);
|
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);
|
inboundMegolmSessionDb_.put(txn, key, pickled);
|
||||||
txn.commit();
|
txn.commit();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue