Commit 789676a2 authored by bryner@chromium.org's avatar bryner@chromium.org

Use the correct remaining data length when parsing chunk headers.

BUG=124853
TEST=SafeBrowsingProtocolParsingTest.TestTruncatedHeader


Review URL: http://codereview.chromium.org/10216006

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@133867 0039d316-1c4b-4281-b951-d872f2087c98
parent 7edaab88
...@@ -199,7 +199,7 @@ bool SafeBrowsingProtocolParser::ParseChunk(const std::string& list_name, ...@@ -199,7 +199,7 @@ bool SafeBrowsingProtocolParser::ParseChunk(const std::string& list_name,
while (remaining > 0) { while (remaining > 0) {
std::string cmd_line; std::string cmd_line;
if (!GetLine(chunk_data, length, &cmd_line)) if (!GetLine(chunk_data, remaining, &cmd_line))
return false; // Error: bad chunk format! return false; // Error: bad chunk format!
const int line_len = static_cast<int>(cmd_line.length()) + 1; const int line_len = static_cast<int>(cmd_line.length()) + 1;
......
...@@ -223,6 +223,21 @@ TEST(SafeBrowsingProtocolParsingTest, TestTruncatedUrlHashChunk) { ...@@ -223,6 +223,21 @@ TEST(SafeBrowsingProtocolParsingTest, TestTruncatedUrlHashChunk) {
EXPECT_EQ(chunks.size(), 0U); EXPECT_EQ(chunks.size(), 0U);
} }
// Test to verify handling of a truncated chunk header.
TEST(SafeBrowsingProtocolParsingTest, TestTruncatedHeader) {
std::string truncated_chunks("a:1:4:0\na:");
// Run the parser.
SafeBrowsingProtocolParser parser;
SBChunkList chunks;
bool result = parser.ParseChunk(
safe_browsing_util::kMalwareList,
truncated_chunks.data(),
static_cast<int>(truncated_chunks.length()),
&chunks);
EXPECT_FALSE(result);
}
// Test parsing one sub chunk. // Test parsing one sub chunk.
TEST(SafeBrowsingProtocolParsingTest, TestSubChunk) { TEST(SafeBrowsingProtocolParsingTest, TestSubChunk) {
std::string sub_chunk("s:9:4:59\naaaaxkkkk1111\003" std::string sub_chunk("s:9:4:59\naaaaxkkkk1111\003"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment