[SERVER-31334] Invalid access to empty boost::optional in multiSyncApply_noAbort() Created: 29/Sep/17  Updated: 29/Sep/17  Resolved: 29/Sep/17

Status: Closed
Project: Core Server
Component/s: Replication, Storage
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Major - P3
Reporter: Siyuan Zhou Assignee: Eric Milkie
Resolution: Duplicate Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
Duplicate
duplicates SERVER-31331 handle missing term (pv0) when groupi... Closed
Operating System: ALL
Participants:
Linked BF Score: 0

 Description   

In multiSyncApply_noAbort(), OplogEntryBase::getTerm() returns a boost::optional, which isn't initialized in PV0, so calling get() on it is invalid.

                // Populate the "t" (term) field with an array of all the grouped inserts' terms.
                BSONArrayBuilder tArrayBuilder(groupedInsertBuilder.subarrayStart("t"));
                for (auto groupingIterator = oplogEntriesIterator;
                     groupingIterator != endOfGroupableOpsIterator;
                     ++groupingIterator) {
                    tArrayBuilder.append(
                        static_cast<long long>((*groupingIterator)->getTerm().get()));
                }
                tArrayBuilder.done();


Generated at Thu Feb 08 04:26:42 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.