diff options
author | rch@chromium.org <rch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-15 18:09:40 +0000 |
---|---|---|
committer | rch@chromium.org <rch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-15 18:09:40 +0000 |
commit | 3618705a9cbdcfedb9e6d6356aae44864d48722e (patch) | |
tree | e6dccab53e96ee07456a39e6c9ae0e80853d4703 /net/quic | |
parent | 8356a0acadec715f5fb6e268e76535b35b2861be (diff) | |
download | chromium_src-3618705a9cbdcfedb9e6d6356aae44864d48722e.zip chromium_src-3618705a9cbdcfedb9e6d6356aae44864d48722e.tar.gz chromium_src-3618705a9cbdcfedb9e6d6356aae44864d48722e.tar.bz2 |
Adding a DCHECK to the QUIC writer's Offset functions, and moving tests around.
Merge internal change: 40692827
Review URL: https://chromiumcodereview.appspot.com/11786009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@176935 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/quic')
-rw-r--r-- | net/quic/quic_data_writer.cc | 2 | ||||
-rw-r--r-- | net/quic/quic_data_writer.h | 3 | ||||
-rw-r--r-- | net/quic/quic_data_writer_test.cc | 13 |
3 files changed, 16 insertions, 2 deletions
diff --git a/net/quic/quic_data_writer.cc b/net/quic/quic_data_writer.cc index 7639566..31ec389 100644 --- a/net/quic/quic_data_writer.cc +++ b/net/quic/quic_data_writer.cc @@ -129,6 +129,7 @@ void QuicDataWriter::WriteUint128ToBuffer(uint128 value, char* buffer) { } bool QuicDataWriter::WriteUInt8ToOffset(uint8 value, size_t offset) { + DCHECK_LT(offset, capacity_); int latched_length = length_; length_ = offset; bool success = WriteUInt8(value); @@ -137,6 +138,7 @@ bool QuicDataWriter::WriteUInt8ToOffset(uint8 value, size_t offset) { } bool QuicDataWriter::WriteUInt48ToOffset(uint64 value, size_t offset) { + DCHECK_LT(offset, capacity_); int latched_length = length_; length_ = offset; bool success = WriteUInt48(value); diff --git a/net/quic/quic_data_writer.h b/net/quic/quic_data_writer.h index c5ecd34..d5f9bb6 100644 --- a/net/quic/quic_data_writer.h +++ b/net/quic/quic_data_writer.h @@ -47,7 +47,8 @@ class NET_EXPORT_PRIVATE QuicDataWriter { bool WriteStringPiece16(base::StringPiece val); bool WriteBytes(const void* data, size_t data_len); - // Methods for editing the payload at a specific offset. + // Methods for editing the payload at a specific offset, where the + // offset must be within the writer's capacity. // Return true if there is enough space at that offset, false otherwise. bool WriteUInt8ToOffset(uint8 value, size_t offset); bool WriteUInt48ToOffset(uint64 value, size_t offset); diff --git a/net/quic/quic_data_writer_test.cc b/net/quic/quic_data_writer_test.cc index 901dd39..70246a4 100644 --- a/net/quic/quic_data_writer_test.cc +++ b/net/quic/quic_data_writer_test.cc @@ -17,7 +17,6 @@ TEST(QuicDataWriterTest, WriteUint8ToOffset) { EXPECT_TRUE(writer.WriteUInt8ToOffset(2, 1)); EXPECT_TRUE(writer.WriteUInt8ToOffset(3, 2)); EXPECT_TRUE(writer.WriteUInt8ToOffset(4, 3)); - EXPECT_FALSE(writer.WriteUInt8ToOffset(5, 4)); char* data = writer.take(); @@ -29,6 +28,18 @@ TEST(QuicDataWriterTest, WriteUint8ToOffset) { delete[] data; } +TEST(QuicDataWriterDeathTest, WriteUint8ToOffset) { + QuicDataWriter writer(4); + +#if !defined(WIN32) && defined(GTEST_HAS_DEATH_TEST) +#if !defined(DCHECK_ALWAYS_ON) + EXPECT_DEBUG_DEATH(writer.WriteUInt8ToOffset(5, 4), "Check failed"); +#else + EXPECT_DEATH(writer.WriteUInt8ToOffset(5, 4), "Check failed"); +#endif +#endif +} + } // namespace } // namespace test } // namespace net |