Index: net/spdy/spdy_framer.cc |
diff --git a/net/spdy/spdy_framer.cc b/net/spdy/spdy_framer.cc |
index 5242e806b36b2d77aaba722e8dfb61c37a362cd1..69d13aabd64950e61a5b2bbcdda6aafe44f55099 100644 |
--- a/net/spdy/spdy_framer.cc |
+++ b/net/spdy/spdy_framer.cc |
@@ -1754,10 +1754,10 @@ size_t SpdyFramer::ProcessGoAwayFramePayload(const char* data, size_t len) { |
uint32 status_raw = GOAWAY_OK; |
successful_read = reader.ReadUInt32(&status_raw); |
DCHECK(successful_read); |
- // We've read an unsigned integer, so it's enough to only check |
- // upper bound to ensure the value is in valid range. |
- if (status_raw < GOAWAY_NUM_STATUS_CODES) { |
- status = static_cast<SpdyGoAwayStatus>(status_raw); |
+ if (SpdyConstants::IsValidGoAwayStatus(protocol_version(), |
+ status_raw)) { |
+ status = SpdyConstants::ParseGoAwayStatus(protocol_version(), |
+ status_raw); |
} else { |
// TODO(hkhalil): Probably best to OnError here, depending on |
// our interpretation of the spec. Keeping with existing liberal |