| Index: net/spdy/spdy_framer_test.cc
|
| diff --git a/net/spdy/spdy_framer_test.cc b/net/spdy/spdy_framer_test.cc
|
| index f671b5f09df73bf097a6e8bddac6fa47dceabc9f..ceea1d389f5bd8bdbca8d523817c6a0fcd416ba7 100644
|
| --- a/net/spdy/spdy_framer_test.cc
|
| +++ b/net/spdy/spdy_framer_test.cc
|
| @@ -3559,4 +3559,34 @@ TEST_P(SpdyFramerTest, SettingsFlagsAndId) {
|
| EXPECT_EQ(kWireFormat, id_and_flags.GetWireFormat(spdy_version_));
|
| }
|
|
|
| +// Tests handling of a GOAWAY frame with out-of-bounds stream ID.
|
| +TEST_P(SpdyFramerTest, GoAwayStreamIdBounds) {
|
| + const unsigned char kV2FrameData[] = {
|
| + 0x80, spdy_version_, 0x00, 0x07,
|
| + 0x00, 0x00, 0x00, 0x04,
|
| + 0xff, 0xff, 0xff, 0xff,
|
| + };
|
| + const unsigned char kV3FrameData[] = {
|
| + 0x80, spdy_version_, 0x00, 0x07,
|
| + 0x00, 0x00, 0x00, 0x08,
|
| + 0xff, 0xff, 0xff, 0xff,
|
| + 0x00, 0x00, 0x00, 0x00,
|
| + };
|
| +
|
| + testing::StrictMock<net::test::MockVisitor> visitor;
|
| + SpdyFramer framer(spdy_version_);
|
| + framer.set_visitor(&visitor);
|
| +
|
| + EXPECT_CALL(visitor, OnGoAway(0x7fffffff, GOAWAY_OK));
|
| + if (IsSpdy2()) {
|
| + framer.ProcessInput(reinterpret_cast<const char*>(kV2FrameData),
|
| + arraysize(kV2FrameData));
|
| + } else {
|
| + framer.ProcessInput(reinterpret_cast<const char*>(kV3FrameData),
|
| + arraysize(kV3FrameData));
|
| + }
|
| + EXPECT_EQ(SpdyFramer::SPDY_RESET, framer.state());
|
| + EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code());
|
| +}
|
| +
|
| } // namespace net
|
|
|