Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(153)

Side by Side Diff: chrome/common/partial_circular_buffer_unittest.cc

Issue 1061053002: Fix PartialCircularBuffer OOB memcpy(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed comments Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // The test buffer data is 52 bytes, wrap position is set to 20 (this is 5 // The test buffer data is 52 bytes, wrap position is set to 20 (this is
6 // arbitrarily chosen). The total buffer size is allocated dynamically based on 6 // arbitrarily chosen). The total buffer size is allocated dynamically based on
7 // the actual header size. This gives: 7 // the actual header size. This gives:
8 // Header of some size, non-wrapping part 20 bytes, wrapping part 32 bytes. 8 // Header of some size, non-wrapping part 20 bytes, wrapping part 32 bytes.
9 // As input data, a 14 byte array is used and repeatedly written. It's chosen 9 // As input data, a 14 byte array is used and repeatedly written. It's chosen
10 // not to be an integer factor smaller than the wrapping part. This ensures that 10 // not to be an integer factor smaller than the wrapping part. This ensures that
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 InitReadBuffer(); 182 InitReadBuffer();
183 183
184 uint8 output_data[sizeof(kInputData)] = {0}; 184 uint8 output_data[sizeof(kInputData)] = {0};
185 EXPECT_EQ(sizeof(output_data), 185 EXPECT_EQ(sizeof(output_data),
186 pcb_read_->Read(output_data, sizeof(output_data))); 186 pcb_read_->Read(output_data, sizeof(output_data)));
187 187
188 EXPECT_EQ(0, memcmp(kInputData, output_data, sizeof(kInputData))); 188 EXPECT_EQ(0, memcmp(kInputData, output_data, sizeof(kInputData)));
189 189
190 EXPECT_EQ(0u, pcb_read_->Read(output_data, sizeof(output_data))); 190 EXPECT_EQ(0u, pcb_read_->Read(output_data, sizeof(output_data)));
191 } 191 }
192
193 TEST_F(PartialCircularBufferTest, WrapTwiceWithSingleWrite) {
194 const size_t kInputSize = sizeof(kInputData);
195 const size_t kLargeSize = kInputSize * 7;
196 uint8 large_input[kLargeSize] = {0};
197 for (size_t offset = 0; offset < kLargeSize; offset += kInputSize)
198 memcpy(large_input + offset, kInputData, kInputSize);
199
200 InitWriteBuffer(false);
201 pcb_write_->Write(large_input, kLargeSize);
202 InitReadBuffer();
203
204 uint8 output_data[sizeof(kOutputRefDataWrap)] = {0};
205 EXPECT_EQ(sizeof(output_data),
206 pcb_read_->Read(output_data, sizeof(output_data)));
207
208 EXPECT_EQ(0, memcmp(kOutputRefDataWrap, output_data, sizeof(output_data)));
209
210 EXPECT_EQ(0u, pcb_read_->Read(output_data, sizeof(output_data)));
211 }
212
OLDNEW
« chrome/common/partial_circular_buffer.cc ('K') | « chrome/common/partial_circular_buffer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698