summaryrefslogtreecommitdiffstats
path: root/net/quic
diff options
context:
space:
mode:
authorrch@chromium.org <rch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-15 18:09:40 +0000
committerrch@chromium.org <rch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-15 18:09:40 +0000
commit3618705a9cbdcfedb9e6d6356aae44864d48722e (patch)
treee6dccab53e96ee07456a39e6c9ae0e80853d4703 /net/quic
parent8356a0acadec715f5fb6e268e76535b35b2861be (diff)
downloadchromium_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.cc2
-rw-r--r--net/quic/quic_data_writer.h3
-rw-r--r--net/quic/quic_data_writer_test.cc13
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