| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 // A library to manage RLZ information for access-points shared | 5 // A library to manage RLZ information for access-points shared | 
| 6 // across different client applications. | 6 // across different client applications. | 
| 7 | 7 | 
| 8 #include "rlz/lib/rlz_lib.h" | 8 #include "rlz/lib/rlz_lib.h" | 
| 9 | 9 | 
| 10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" | 
| (...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 415   int calculated_crc; | 415   int calculated_crc; | 
| 416   int checksum_index = response_string.find(checksum_param); | 416   int checksum_index = response_string.find(checksum_param); | 
| 417   if (checksum_index >= 0) { | 417   if (checksum_index >= 0) { | 
| 418     // Calculate checksum of message preceeding checksum line. | 418     // Calculate checksum of message preceeding checksum line. | 
| 419     // (+ 1 to include the \n) | 419     // (+ 1 to include the \n) | 
| 420     std::string message(response_string.substr(0, checksum_index + 1)); | 420     std::string message(response_string.substr(0, checksum_index + 1)); | 
| 421     if (!Crc32(message.c_str(), &calculated_crc)) | 421     if (!Crc32(message.c_str(), &calculated_crc)) | 
| 422       return false; | 422       return false; | 
| 423   } else { | 423   } else { | 
| 424     checksum_param = "crc32: ";  // Empty response case. | 424     checksum_param = "crc32: ";  // Empty response case. | 
| 425     if (!base::StartsWithASCII(response_string, checksum_param, true)) | 425     if (!base::StartsWith(response_string, checksum_param, | 
|  | 426                           base::CompareCase::SENSITIVE)) | 
| 426       return false; | 427       return false; | 
| 427 | 428 | 
| 428     checksum_index = 0; | 429     checksum_index = 0; | 
| 429     if (!Crc32("", &calculated_crc)) | 430     if (!Crc32("", &calculated_crc)) | 
| 430       return false; | 431       return false; | 
| 431   } | 432   } | 
| 432 | 433 | 
| 433   // Find the checksum value on the response. | 434   // Find the checksum value on the response. | 
| 434   int checksum_end = response_string.find("\n", checksum_index + 1); | 435   int checksum_end = response_string.find("\n", checksum_index + 1); | 
| 435   if (checksum_end < 0) | 436   if (checksum_end < 0) | 
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 527     int line_end = line_end_index; | 528     int line_end = line_end_index; | 
| 528     if (line_end < 0) | 529     if (line_end < 0) | 
| 529       line_end = response_length; | 530       line_end = response_length; | 
| 530 | 531 | 
| 531     if (line_end <= line_begin) | 532     if (line_end <= line_begin) | 
| 532       continue;  // Empty line. | 533       continue;  // Empty line. | 
| 533 | 534 | 
| 534     std::string response_line; | 535     std::string response_line; | 
| 535     response_line = response_string.substr(line_begin, line_end - line_begin); | 536     response_line = response_string.substr(line_begin, line_end - line_begin); | 
| 536 | 537 | 
| 537     if (base::StartsWithASCII(response_line, kRlzCgiVariable, | 538     if (base::StartsWith(response_line, kRlzCgiVariable, | 
| 538                               true)) {  // An RLZ. | 539                          base::CompareCase::SENSITIVE)) {  // An RLZ. | 
| 539       int separator_index = -1; | 540       int separator_index = -1; | 
| 540       if ((separator_index = response_line.find(": ")) < 0) | 541       if ((separator_index = response_line.find(": ")) < 0) | 
| 541         continue;  // Not a valid key-value pair. | 542         continue;  // Not a valid key-value pair. | 
| 542 | 543 | 
| 543       // Get the access point. | 544       // Get the access point. | 
| 544       std::string point_name = | 545       std::string point_name = | 
| 545         response_line.substr(3, separator_index - rlz_cgi_length); | 546         response_line.substr(3, separator_index - rlz_cgi_length); | 
| 546       AccessPoint point = NO_ACCESS_POINT; | 547       AccessPoint point = NO_ACCESS_POINT; | 
| 547       if (!GetAccessPointFromName(point_name.c_str(), &point) || | 548       if (!GetAccessPointFromName(point_name.c_str(), &point) || | 
| 548           point == NO_ACCESS_POINT) | 549           point == NO_ACCESS_POINT) | 
| 549         continue;  // Not a valid access point. | 550         continue;  // Not a valid access point. | 
| 550 | 551 | 
| 551       // Get the new RLZ. | 552       // Get the new RLZ. | 
| 552       std::string rlz_value(response_line.substr(separator_index + 2)); | 553       std::string rlz_value(response_line.substr(separator_index + 2)); | 
| 553       base::TrimWhitespaceASCII(rlz_value, base::TRIM_LEADING, &rlz_value); | 554       base::TrimWhitespaceASCII(rlz_value, base::TRIM_LEADING, &rlz_value); | 
| 554 | 555 | 
| 555       size_t rlz_length = rlz_value.find_first_of("\r\n "); | 556       size_t rlz_length = rlz_value.find_first_of("\r\n "); | 
| 556       if (rlz_length == std::string::npos) | 557       if (rlz_length == std::string::npos) | 
| 557         rlz_length = rlz_value.size(); | 558         rlz_length = rlz_value.size(); | 
| 558 | 559 | 
| 559       if (rlz_length > kMaxRlzLength) | 560       if (rlz_length > kMaxRlzLength) | 
| 560         continue;  // Too long. | 561         continue;  // Too long. | 
| 561 | 562 | 
| 562       if (IsAccessPointSupported(point)) | 563       if (IsAccessPointSupported(point)) | 
| 563         SetAccessPointRlz(point, rlz_value.substr(0, rlz_length).c_str()); | 564         SetAccessPointRlz(point, rlz_value.substr(0, rlz_length).c_str()); | 
| 564     } else if (base::StartsWithASCII(response_line, events_variable, true)) { | 565     } else if (base::StartsWith(response_line, events_variable, | 
|  | 566                                 base::CompareCase::SENSITIVE)) { | 
| 565       // Clear events which server parsed. | 567       // Clear events which server parsed. | 
| 566       std::vector<ReturnedEvent> event_array; | 568       std::vector<ReturnedEvent> event_array; | 
| 567       GetEventsFromResponseString(response_line, events_variable, &event_array); | 569       GetEventsFromResponseString(response_line, events_variable, &event_array); | 
| 568       for (size_t i = 0; i < event_array.size(); ++i) { | 570       for (size_t i = 0; i < event_array.size(); ++i) { | 
| 569         ClearProductEvent(product, event_array[i].access_point, | 571         ClearProductEvent(product, event_array[i].access_point, | 
| 570                           event_array[i].event_type); | 572                           event_array[i].event_type); | 
| 571       } | 573       } | 
| 572     } else if (base::StartsWithASCII(response_line, stateful_events_variable, | 574     } else if (base::StartsWith(response_line, stateful_events_variable, | 
| 573                                      true)) { | 575                                 base::CompareCase::SENSITIVE)) { | 
| 574       // Record any stateful events the server send over. | 576       // Record any stateful events the server send over. | 
| 575       std::vector<ReturnedEvent> event_array; | 577       std::vector<ReturnedEvent> event_array; | 
| 576       GetEventsFromResponseString(response_line, stateful_events_variable, | 578       GetEventsFromResponseString(response_line, stateful_events_variable, | 
| 577                                   &event_array); | 579                                   &event_array); | 
| 578       for (size_t i = 0; i < event_array.size(); ++i) { | 580       for (size_t i = 0; i < event_array.size(); ++i) { | 
| 579         RecordStatefulEvent(product, event_array[i].access_point, | 581         RecordStatefulEvent(product, event_array[i].access_point, | 
| 580                             event_array[i].event_type); | 582                             event_array[i].event_type); | 
| 581       } | 583       } | 
| 582     } | 584     } | 
| 583   } while (line_end_index >= 0); | 585   } while (line_end_index >= 0); | 
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 644   if (cgi_string.size() >= cgi_size) | 646   if (cgi_string.size() >= cgi_size) | 
| 645     return false; | 647     return false; | 
| 646 | 648 | 
| 647   strncpy(cgi, cgi_string.c_str(), cgi_size); | 649   strncpy(cgi, cgi_string.c_str(), cgi_size); | 
| 648   cgi[cgi_size - 1] = 0; | 650   cgi[cgi_size - 1] = 0; | 
| 649 | 651 | 
| 650   return true; | 652   return true; | 
| 651 } | 653 } | 
| 652 | 654 | 
| 653 }  // namespace rlz_lib | 655 }  // namespace rlz_lib | 
| OLD | NEW | 
|---|