summaryrefslogtreecommitdiffstats
path: root/net/spdy/spdy_framer.cc
diff options
context:
space:
mode:
authorcbentzel@chromium.org <cbentzel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-02 15:26:09 +0000
committercbentzel@chromium.org <cbentzel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-02 15:26:09 +0000
commit4411f175490ab73c6395d2e4076568003371617b (patch)
tree3f8ddcc751d5cc70253ef1bc7b0dc2e74bcd8109 /net/spdy/spdy_framer.cc
parent03c5430b5362b1925a0bb5a1df404304fe09ace1 (diff)
downloadchromium_src-4411f175490ab73c6395d2e4076568003371617b.zip
chromium_src-4411f175490ab73c6395d2e4076568003371617b.tar.gz
chromium_src-4411f175490ab73c6395d2e4076568003371617b.tar.bz2
SPDY: Handle incorrect number of headers when parsing frame headers.
This fix broke some tests which were also fixed. BUG=47480 TEST=net_unittests Contributed by: agayev@google.com Review URL: http://codereview.chromium.org/2805066 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@51533 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/spdy/spdy_framer.cc')
-rw-r--r--net/spdy/spdy_framer.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/net/spdy/spdy_framer.cc b/net/spdy/spdy_framer.cc
index 0a1c2b7..cd573a5 100644
--- a/net/spdy/spdy_framer.cc
+++ b/net/spdy/spdy_framer.cc
@@ -470,7 +470,8 @@ bool SpdyFramer::ParseHeaderBlock(const SpdyFrame* frame,
void* iter = NULL;
uint16 num_headers;
if (builder.ReadUInt16(&iter, &num_headers)) {
- for (int index = 0; index < num_headers; ++index) {
+ int index = 0;
+ for ( ; index < num_headers; ++index) {
std::string name;
std::string value;
if (!builder.ReadString(&iter, &name))
@@ -485,7 +486,8 @@ bool SpdyFramer::ParseHeaderBlock(const SpdyFrame* frame,
return false;
}
}
- return true;
+ return index == num_headers &&
+ iter == header_data + header_length;
}
return false;
}