OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 // | 4 // |
5 // Parse the data returned from the SafeBrowsing v2.1 protocol response. | 5 // Parse the data returned from the SafeBrowsing v2.1 protocol response. |
6 | 6 |
7 #include "build/build_config.h" | 7 #include "build/build_config.h" |
8 | 8 |
9 #if defined(OS_WIN) | 9 #if defined(OS_WIN) |
10 #include <Winsock2.h> | 10 #include <Winsock2.h> |
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
289 | 289 |
290 const int chunk_len = atoi(cmd_parts[3].c_str()); | 290 const int chunk_len = atoi(cmd_parts[3].c_str()); |
291 chunk_data += line_len; | 291 chunk_data += line_len; |
292 remaining -= line_len; | 292 remaining -= line_len; |
293 | 293 |
294 chunks->push_back(SBChunk()); | 294 chunks->push_back(SBChunk()); |
295 chunks->back().chunk_number = chunk_number; | 295 chunks->back().chunk_number = chunk_number; |
296 | 296 |
297 if (cmd_parts[0] == "a") { | 297 if (cmd_parts[0] == "a") { |
298 chunks->back().is_add = true; | 298 chunks->back().is_add = true; |
299 if (!ParseAddChunk(chunk_data, chunk_len, hash_len, &chunks->back().hosts)
) | 299 if (!ParseAddChunk(chunk_data, chunk_len, hash_len, |
| 300 &chunks->back().hosts)) |
300 return false; // Parse error. | 301 return false; // Parse error. |
301 } else if (cmd_parts[0] == "s") { | 302 } else if (cmd_parts[0] == "s") { |
302 chunks->back().is_add = false; | 303 chunks->back().is_add = false; |
303 if (!ParseSubChunk(chunk_data, chunk_len, hash_len, &chunks->back().hosts)
) | 304 if (!ParseSubChunk(chunk_data, chunk_len, hash_len, |
| 305 &chunks->back().hosts)) |
304 return false; // Parse error. | 306 return false; // Parse error. |
305 } else { | 307 } else { |
306 NOTREACHED(); | 308 NOTREACHED(); |
307 return false; | 309 return false; |
308 } | 310 } |
309 | 311 |
310 chunk_data += chunk_len; | 312 chunk_data += chunk_len; |
311 remaining -= chunk_len; | 313 remaining -= chunk_len; |
312 if (remaining < 0) | 314 if (remaining < 0) |
313 return false; // Parse error. | 315 return false; // Parse error. |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
347 entry = hosts->back().entry->Enlarge(prefix_count); | 349 entry = hosts->back().entry->Enlarge(prefix_count); |
348 hosts->back().entry = entry; | 350 hosts->back().entry = entry; |
349 } else { | 351 } else { |
350 entry = SBEntry::Create(type, prefix_count); | 352 entry = SBEntry::Create(type, prefix_count); |
351 SBChunkHost chunk_host; | 353 SBChunkHost chunk_host; |
352 chunk_host.host = host; | 354 chunk_host.host = host; |
353 chunk_host.entry = entry; | 355 chunk_host.entry = entry; |
354 hosts->push_back(chunk_host); | 356 hosts->push_back(chunk_host); |
355 } | 357 } |
356 | 358 |
357 if (!ReadPrefixes(&chunk_data, &remaining, entry, prefix_count, index_start)
) | 359 if (!ReadPrefixes(&chunk_data, &remaining, entry, prefix_count, |
| 360 index_start)) |
358 return false; | 361 return false; |
359 } | 362 } |
360 | 363 |
361 return remaining == 0; | 364 return remaining == 0; |
362 } | 365 } |
363 | 366 |
364 bool SafeBrowsingProtocolParser::ParseSubChunk( | 367 bool SafeBrowsingProtocolParser::ParseSubChunk( |
365 const char* data, int data_len, int hash_len, | 368 const char* data, int data_len, int hash_len, |
366 std::deque<SBChunkHost>* hosts) { | 369 std::deque<SBChunkHost>* hosts) { |
367 | 370 |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
479 | 482 |
480 data += line.size() + 1; | 483 data += line.size() + 1; |
481 remaining -= static_cast<int>(line.size()) + 1; | 484 remaining -= static_cast<int>(line.size()) + 1; |
482 } | 485 } |
483 | 486 |
484 if (client_key->empty() || wrapped_key->empty()) | 487 if (client_key->empty() || wrapped_key->empty()) |
485 return false; | 488 return false; |
486 | 489 |
487 return true; | 490 return true; |
488 } | 491 } |
OLD | NEW |