Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(149)

Side by Side Diff: net/base/net_util_icu_unittest.cc

Issue 1158023004: Added characters that look like padlocks to net IDN character blacklist. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Blacklist the other padlock symbols, and more/fixed tests. Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« net/base/net_util_icu.cc ('K') | « net/base/net_util_icu.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #include "net/base/net_util.h" 5 #include "net/base/net_util.h"
6 6
7 #include <string.h> 7 #include <string.h>
8 8
9 #include <vector> 9 #include <vector>
10 10
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 false, false, false, false, false, 324 false, false, false, false, false,
325 false, false, false, false, false, 325 false, false, false, false, false,
326 false, false, false, false, false, 326 false, false, false, false, false,
327 }}, 327 }},
328 {"google.xn--comevil-v04f.jp", L"google.com\x30ce" L"evil.jp", 328 {"google.xn--comevil-v04f.jp", L"google.com\x30ce" L"evil.jp",
329 {false, false, false, false, false, 329 {false, false, false, false, false,
330 false, false, false, false, false, 330 false, false, false, false, false,
331 false, false, false, false, false, 331 false, false, false, false, false,
332 false, false, false, false, false, 332 false, false, false, false, false,
333 }}, 333 }},
334 // Padlock icon spoof.
335 {"xn--google-hj64e", L"\U0001f512google.com",
336 {false, false, false, false, false,
337 false, false, false, false, false,
338 false, false, false, false, false,
339 false, false, false, false, false,
340 }},
341 // Ensure that by blacklisting "\xd83d\xdd12", we have not inadvertently
342 // blacklisted all strings with the surrogate '\xdd12'.
mmenke 2015/06/05 15:08:06 nit: Don't use "we" in comments
Matt Giuca 2015/06/09 04:10:35 Hmm, not a fan of this rule (it means rewriting ac
343 {"xn--fk9c.com", L"\U00010912.com",
344 {true, false, false, false, false,
345 false, false, false, false, false,
346 false, false, false, false, false,
347 false, false, false, false, false,
348 }},
334 #if 0 349 #if 0
335 // These two cases are special. We need a separate test. 350 // These two cases are special. We need a separate test.
336 // U+3000 and U+3002 are normalized to ASCII space and dot. 351 // U+3000 and U+3002 are normalized to ASCII space and dot.
337 {"xn-- -kq6ay5z.cn", L"\x4e2d\x56fd\x3000.cn", 352 {"xn-- -kq6ay5z.cn", L"\x4e2d\x56fd\x3000.cn",
338 {false, false, true, false, false, 353 {false, false, true, false, false,
339 false, false, false, false, false, 354 false, false, false, false, false,
340 false, false, false, false, false, 355 false, false, false, false, false,
341 false, false, true, false, false, 356 false, false, true, false, false,
342 true}}, 357 true}},
343 {"xn--fiqs8s.cn", L"\x4e2d\x56fd\x3002" L"cn", 358 {"xn--fiqs8s.cn", L"\x4e2d\x56fd\x3002" L"cn",
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 for (size_t i = 0; i < arraysize(idn_cases); i++) { 430 for (size_t i = 0; i < arraysize(idn_cases); i++) {
416 for (size_t j = 0; j < arraysize(kLanguages); j++) { 431 for (size_t j = 0; j < arraysize(kLanguages); j++) {
417 // ja || zh-TW,en || ko,ja -> IDNToUnicodeSlow 432 // ja || zh-TW,en || ko,ja -> IDNToUnicodeSlow
418 if (j == 3 || j == 17 || j == 18) 433 if (j == 3 || j == 17 || j == 18)
419 continue; 434 continue;
420 base::string16 output(IDNToUnicode(idn_cases[i].input, kLanguages[j])); 435 base::string16 output(IDNToUnicode(idn_cases[i].input, kLanguages[j]));
421 base::string16 expected(idn_cases[i].unicode_allowed[j] ? 436 base::string16 expected(idn_cases[i].unicode_allowed[j] ?
422 WideToUTF16(idn_cases[i].unicode_output) : 437 WideToUTF16(idn_cases[i].unicode_output) :
423 ASCIIToUTF16(idn_cases[i].input)); 438 ASCIIToUTF16(idn_cases[i].input));
424 AppendLanguagesToOutputs(kLanguages[j], &expected, &output); 439 AppendLanguagesToOutputs(kLanguages[j], &expected, &output);
425 EXPECT_EQ(expected, output); 440 EXPECT_EQ(expected, output) << "input: \"" << idn_cases[i].input
441 << "\", languages: \"" << kLanguages[j]
442 << "\"";
426 } 443 }
427 } 444 }
428 } 445 }
429 446
430 TEST(NetUtilTest, IDNToUnicodeSlow) { 447 TEST(NetUtilTest, IDNToUnicodeSlow) {
431 for (size_t i = 0; i < arraysize(idn_cases); i++) { 448 for (size_t i = 0; i < arraysize(idn_cases); i++) {
432 for (size_t j = 0; j < arraysize(kLanguages); j++) { 449 for (size_t j = 0; j < arraysize(kLanguages); j++) {
433 // !(ja || zh-TW,en || ko,ja) -> IDNToUnicodeFast 450 // !(ja || zh-TW,en || ko,ja) -> IDNToUnicodeFast
434 if (!(j == 3 || j == 17 || j == 18)) 451 if (!(j == 3 || j == 17 || j == 18))
435 continue; 452 continue;
436 base::string16 output(IDNToUnicode(idn_cases[i].input, kLanguages[j])); 453 base::string16 output(IDNToUnicode(idn_cases[i].input, kLanguages[j]));
437 base::string16 expected(idn_cases[i].unicode_allowed[j] ? 454 base::string16 expected(idn_cases[i].unicode_allowed[j] ?
438 WideToUTF16(idn_cases[i].unicode_output) : 455 WideToUTF16(idn_cases[i].unicode_output) :
439 ASCIIToUTF16(idn_cases[i].input)); 456 ASCIIToUTF16(idn_cases[i].input));
440 AppendLanguagesToOutputs(kLanguages[j], &expected, &output); 457 AppendLanguagesToOutputs(kLanguages[j], &expected, &output);
441 EXPECT_EQ(expected, output); 458 EXPECT_EQ(expected, output) << "input: \"" << idn_cases[i].input
459 << "\", languages: \"" << kLanguages[j]
460 << "\"";
442 } 461 }
443 } 462 }
444 } 463 }
445 464
446 // ulocdata_getExemplarSet may fail with some locales (currently bn, gu, and 465 // ulocdata_getExemplarSet may fail with some locales (currently bn, gu, and
447 // te), which was causing a crash (See http://crbug.com/510551). This may be an 466 // te), which was causing a crash (See http://crbug.com/510551). This may be an
448 // icu bug, but regardless, that should not cause a crash. 467 // icu bug, but regardless, that should not cause a crash.
449 TEST(NetUtilTest, IDNToUnicodeNeverCrashes) { 468 TEST(NetUtilTest, IDNToUnicodeNeverCrashes) {
450 for (char c1 = 'a'; c1 <= 'z'; c1++) { 469 for (char c1 = 'a'; c1 <= 'z'; c1++) {
451 for (char c2 = 'a'; c2 <= 'z'; c2++) { 470 for (char c2 = 'a'; c2 <= 'z'; c2++) {
(...skipping 623 matching lines...) Expand 10 before | Expand all | Expand 10 after
1075 1094
1076 const size_t omit_all_offsets[] = { 1095 const size_t omit_all_offsets[] = {
1077 0, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, 0, kNpos, kNpos, kNpos, kNpos, 1096 0, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, 0, kNpos, kNpos, kNpos, kNpos,
1078 0, 1, 2, 3, 4, 5, 6, 7 1097 0, 1, 2, 3, 4, 5, 6, 7
1079 }; 1098 };
1080 CheckAdjustedOffsets("http://user@foo.com/", "en", kFormatUrlOmitAll, 1099 CheckAdjustedOffsets("http://user@foo.com/", "en", kFormatUrlOmitAll,
1081 UnescapeRule::NORMAL, omit_all_offsets); 1100 UnescapeRule::NORMAL, omit_all_offsets);
1082 } 1101 }
1083 1102
1084 } // namespace net 1103 } // namespace net
OLDNEW
« net/base/net_util_icu.cc ('K') | « net/base/net_util_icu.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698