DescriptionIndexedDB: Fixed cursor/blob use-after-free bug
The IndexedDBDispatcherHost maintains a map of BLOB UUID's to BLOBs, but if two
(or more) cursors are both active and referencing the same BLOB then two (or
more) BLOBs would exist with the same UUID, and their keys would collide in this
map. This change reference counts these BLOBs to avoid duplication.
Also, access to the existing map was not synchronized and was accessed on two
different threads.
BUG=435880, 436137
Committed: https://crrev.com/2d74497dfa5e6fd6ddddc93248c322a57dd8dd2c
Cr-Commit-Position: refs/heads/master@{#307063}
Patch Set 1 #
Total comments: 4
Patch Set 2 : Merged IncrementBlobDataIfHeld into HoldBlobData #Patch Set 3 : Ensuring AckReceivedBlobs called on IO thread #
Total comments: 2
Patch Set 4 : Using std::make_pair #
Total comments: 2
Patch Set 5 : Removed unused BlobStorageContext param from CreateBlobData() #
Messages
Total messages: 13 (2 generated)
|