libsnapshot: add check for updating next_data_pos_

Adding a check here to ensure that next_data_pos_ isn't modified since
initialization. After sizing the sequence buffer, this value should be
the initialized value + the size of sequence buffer.

Test: cow_api_test
Change-Id: I9c79041b72544500989860a13ca6c25830d28750
This commit is contained in:
Daniel Zheng 2024-01-03 14:22:54 -08:00
parent 3f3162c217
commit 070848b9ef

View file

@ -399,8 +399,14 @@ bool CowWriterV3::EmitSequenceData(size_t num_ops, const uint32_t* data) {
"operation writes.";
return false;
}
header_.sequence_data_count = num_ops;
// Ensure next_data_pos_ is updated as previously initialized + the newly added sequence buffer.
CHECK_EQ(next_data_pos_ + header_.sequence_data_count * sizeof(uint32_t),
GetDataOffset(header_));
next_data_pos_ = GetDataOffset(header_);
if (!android::base::WriteFullyAtOffset(fd_, data, sizeof(data[0]) * num_ops,
GetSequenceOffset(header_))) {
PLOG(ERROR) << "writing sequence buffer failed";