Index: chrome/browser/autocomplete_history_manager.cc |
=================================================================== |
--- chrome/browser/autocomplete_history_manager.cc (revision 63369) |
+++ chrome/browser/autocomplete_history_manager.cc (working copy) |
@@ -31,8 +31,6 @@ |
bool IsSSN(const string16& text) { |
string16 number_string; |
RemoveChars(text, kSSNSeparators.c_str(), &number_string); |
- if (number_string.length() != 9 || !IsStringASCII(number_string)) |
- return false; |
// A SSN is of the form AAA-GG-SSSS (A = area number, G = group number, S = |
// serial number). The validation we do here is simply checking if the area, |
@@ -42,13 +40,13 @@ |
// See: http://www.socialsecurity.gov/history/ssn/geocard.html |
// http://www.socialsecurity.gov/employer/stateweb.htm |
// http://www.socialsecurity.gov/employer/ssnvhighgroup.htm |
+ if (number_string.length() != 9 || !IsStringASCII(number_string)) |
+ return false; |
- string16 area_string = number_string.substr(0, 3); |
- string16 group_string = number_string.substr(3, 2); |
- string16 serial_string = number_string.substr(5, 4); |
- |
int area; |
- if (!base::StringToInt(area_string, &area)) |
+ if (!base::StringToInt(number_string.begin(), |
+ number_string.begin() + 3, |
+ &area)) |
return false; |
if (area < 1 || |
area == 666 || |
@@ -57,11 +55,15 @@ |
return false; |
int group; |
- if (!base::StringToInt(group_string, &group) || group == 0) |
+ if (!base::StringToInt(number_string.begin() + 3, |
+ number_string.begin() + 5, |
+ &group) || group == 0) |
return false; |
int serial; |
- if (!base::StringToInt(serial_string, &serial) || serial == 0) |
+ if (!base::StringToInt(number_string.begin() + 5, |
+ number_string.begin() + 9, |
+ &serial) || serial == 0) |
return false; |
return true; |