Page MenuHomePhabricator

[native] Remove length check when unpickling
ClosedPublic

Authored by ashoat on Mar 16 2023, 12:50 PM.
Tags
None
Referenced Files
Unknown Object (File)
Tue, Oct 22, 12:32 PM
Unknown Object (File)
Tue, Oct 22, 12:32 PM
Unknown Object (File)
Tue, Oct 22, 3:14 AM
Unknown Object (File)
Mon, Oct 21, 4:15 PM
Unknown Object (File)
Sep 18 2024, 4:48 AM
Unknown Object (File)
Sep 16 2024, 7:19 AM
Unknown Object (File)
Sep 16 2024, 6:02 AM
Unknown Object (File)
Sep 16 2024, 6:02 AM
Subscribers

Details

Summary

When we upgraded Olm versions, the length of ::olm_pickle_account_length(this->account) decreased because PICKLE_VERSION got updated. In other words, the Olm team changed the serialization format.

As a result of this, we started seeing exceptions anytime initializeCryptoAccount was called.

Looking at Olm code, the purpose of ::olm_pickle_account_length and ::olm_pickle_session_length is to figure out how much space to allocate to a buffer for pickling. It will always give you the size necessary for the most recent PICKLE_VERSION. It should not be used to compare the size in the database, since that could correspond to an old PICKLE_VERSION.

Test Plan

I was able to repro the issue, and able to confirm that this fix resolved the issue

Diff Detail

Repository
rCOMM Comm
Lint
Lint Not Applicable
Unit
Tests Not Applicable