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

Side by Side Diff: chrome/browser/safe_browsing/protocol_parser_unittest.cc

Issue 172393005: [safe browsing] Remove stale BINHASH code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 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 | Annotate | Revision Log
OLDNEW
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 // Program to test the SafeBrowsing protocol parsing v2.1. 5 // Program to test the SafeBrowsing protocol parsing v2.1.
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 9
10 #include "base/strings/stringprintf.h" 10 #include "base/strings/stringprintf.h"
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 173
174 const SBChunkHost& host0 = chunks[0].hosts[0]; 174 const SBChunkHost& host0 = chunks[0].hosts[0];
175 EXPECT_EQ(host0.host, 0x61616161); 175 EXPECT_EQ(host0.host, 0x61616161);
176 EXPECT_EQ(host0.entry->prefix_count(), 255); 176 EXPECT_EQ(host0.entry->prefix_count(), 255);
177 177
178 const SBChunkHost& host1 = chunks[0].hosts[1]; 178 const SBChunkHost& host1 = chunks[0].hosts[1];
179 EXPECT_EQ(host1.host, 0x61616161); 179 EXPECT_EQ(host1.host, 0x61616161);
180 EXPECT_EQ(host1.entry->prefix_count(), 5); 180 EXPECT_EQ(host1.entry->prefix_count(), 5);
181 } 181 }
182 182
183 // Test to make sure we could deal with truncated bin hash chunk. 183 // Test to make sure we could deal with truncated goog-*-digestvar chunk.
184 TEST(SafeBrowsingProtocolParsingTest, TestTruncatedBinHashChunk) { 184 TEST(SafeBrowsingProtocolParsingTest, TestTruncatedHashChunk) {
185 // This chunk delares there are 4 prefixes but actually only contains 2. 185 // This chunk delares there are 4 prefixes but actually only contains 2.
186 const char add_chunk[] = "a:1:4:16\n11112222"; 186 const char add_chunk[] = "a:1:4:16\n11112222";
187 SafeBrowsingProtocolParser parser; 187 SafeBrowsingProtocolParser parser;
188 SBChunkList chunks; 188 SBChunkList chunks;
189 bool result = parser.ParseChunk(safe_browsing_util::kBinHashList, 189 bool result = parser.ParseChunk(safe_browsing_util::kExtensionBlacklist,
190 add_chunk, 190 add_chunk,
191 static_cast<int>(sizeof(add_chunk)), 191 static_cast<int>(sizeof(add_chunk)),
192 &chunks); 192 &chunks);
193 EXPECT_FALSE(result); 193 EXPECT_FALSE(result);
194 EXPECT_EQ(chunks.size(), 0U); 194 EXPECT_EQ(chunks.size(), 0U);
195 } 195 }
196 196
197 // Test to make sure we could deal with truncated malwarelist chunk. 197 // Test to make sure we could deal with truncated malwarelist chunk.
198 TEST(SafeBrowsingProtocolParsingTest, TestTruncatedUrlHashChunk) { 198 TEST(SafeBrowsingProtocolParsingTest, TestTruncatedUrlHashChunk) {
199 // This chunk delares there are 4 prefixes but actually only contains 2. 199 // This chunk delares there are 4 prefixes but actually only contains 2.
(...skipping 434 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 EXPECT_EQ(chunks[2].hosts[1].entry->ChunkIdAtPrefix(0), 0x35363738); 634 EXPECT_EQ(chunks[2].hosts[1].entry->ChunkIdAtPrefix(0), 0x35363738);
635 } 635 }
636 636
637 TEST(SafeBrowsingProtocolParsingTest, TestAddBinHashChunks) { 637 TEST(SafeBrowsingProtocolParsingTest, TestAddBinHashChunks) {
638 std::string add_chunk("a:1:4:16\naaaabbbbccccdddd" 638 std::string add_chunk("a:1:4:16\naaaabbbbccccdddd"
639 "a:2:4:8\n11112222"); 639 "a:2:4:8\n11112222");
640 // Run the parse. 640 // Run the parse.
641 SafeBrowsingProtocolParser parser; 641 SafeBrowsingProtocolParser parser;
642 SBChunkList chunks; 642 SBChunkList chunks;
643 bool result = parser.ParseChunk( 643 bool result = parser.ParseChunk(
644 safe_browsing_util::kBinHashList, 644 safe_browsing_util::kExtensionBlacklist,
645 add_chunk.data(), 645 add_chunk.data(),
646 static_cast<int>(add_chunk.length()), 646 static_cast<int>(add_chunk.length()),
647 &chunks); 647 &chunks);
648 EXPECT_TRUE(result); 648 EXPECT_TRUE(result);
649 EXPECT_EQ(chunks.size(), 2U); 649 EXPECT_EQ(chunks.size(), 2U);
650 EXPECT_EQ(chunks[0].chunk_number, 1); 650 EXPECT_EQ(chunks[0].chunk_number, 1);
651 EXPECT_EQ(chunks[0].hosts.size(), 1U); 651 EXPECT_EQ(chunks[0].hosts.size(), 1U);
652 652
653 EXPECT_EQ(chunks[0].hosts[0].host, 0); 653 EXPECT_EQ(chunks[0].hosts[0].host, 0);
654 SBEntry* entry = chunks[0].hosts[0].entry; 654 SBEntry* entry = chunks[0].hosts[0].entry;
(...skipping 15 matching lines...) Expand all
670 670
671 // Test parsing one add chunk where a hostkey spans several entries. 671 // Test parsing one add chunk where a hostkey spans several entries.
672 TEST(SafeBrowsingProtocolParsingTest, TestAddBigBinHashChunk) { 672 TEST(SafeBrowsingProtocolParsingTest, TestAddBigBinHashChunk) {
673 std::string add_chunk("a:1:4:1028\n"); 673 std::string add_chunk("a:1:4:1028\n");
674 for (int i = 0; i < 257; ++i) 674 for (int i = 0; i < 257; ++i)
675 add_chunk.append(base::StringPrintf("%04d", i)); 675 add_chunk.append(base::StringPrintf("%04d", i));
676 676
677 SafeBrowsingProtocolParser parser; 677 SafeBrowsingProtocolParser parser;
678 SBChunkList chunks; 678 SBChunkList chunks;
679 bool result = parser.ParseChunk( 679 bool result = parser.ParseChunk(
680 safe_browsing_util::kBinHashList, 680 safe_browsing_util::kExtensionBlacklist,
681 add_chunk.data(), 681 add_chunk.data(),
682 static_cast<int>(add_chunk.length()), 682 static_cast<int>(add_chunk.length()),
683 &chunks); 683 &chunks);
684 EXPECT_TRUE(result); 684 EXPECT_TRUE(result);
685 EXPECT_EQ(chunks.size(), 1U); 685 EXPECT_EQ(chunks.size(), 1U);
686 EXPECT_EQ(chunks[0].chunk_number, 1); 686 EXPECT_EQ(chunks[0].chunk_number, 1);
687 687
688 EXPECT_EQ(chunks[0].hosts.size(), 1U); 688 EXPECT_EQ(chunks[0].hosts.size(), 1U);
689 689
690 const SBChunkHost& host0 = chunks[0].hosts[0]; 690 const SBChunkHost& host0 = chunks[0].hosts[0];
691 EXPECT_EQ(host0.host, 0); 691 EXPECT_EQ(host0.host, 0);
692 EXPECT_EQ(host0.entry->prefix_count(), 257); 692 EXPECT_EQ(host0.entry->prefix_count(), 257);
693 } 693 }
694 694
695 // Test parsing one sub chunk. 695 // Test parsing one sub chunk.
696 TEST(SafeBrowsingProtocolParsingTest, TestSubBinHashChunk) { 696 TEST(SafeBrowsingProtocolParsingTest, TestSubBinHashChunk) {
697 std::string sub_chunk("s:9:4:16\n1111mmmm2222nnnn"); 697 std::string sub_chunk("s:9:4:16\n1111mmmm2222nnnn");
698 698
699 // Run the parser. 699 // Run the parser.
700 SafeBrowsingProtocolParser parser; 700 SafeBrowsingProtocolParser parser;
701 SBChunkList chunks; 701 SBChunkList chunks;
702 bool result = parser.ParseChunk( 702 bool result = parser.ParseChunk(
703 safe_browsing_util::kBinHashList, 703 safe_browsing_util::kExtensionBlacklist,
704 sub_chunk.data(), 704 sub_chunk.data(),
705 static_cast<int>(sub_chunk.length()), 705 static_cast<int>(sub_chunk.length()),
706 &chunks); 706 &chunks);
707 EXPECT_TRUE(result); 707 EXPECT_TRUE(result);
708 EXPECT_EQ(chunks.size(), 1U); 708 EXPECT_EQ(chunks.size(), 1U);
709 EXPECT_EQ(chunks[0].chunk_number, 9); 709 EXPECT_EQ(chunks[0].chunk_number, 9);
710 EXPECT_EQ(chunks[0].hosts.size(), 1U); 710 EXPECT_EQ(chunks[0].hosts.size(), 1U);
711 711
712 EXPECT_EQ(chunks[0].hosts[0].host, 0); 712 EXPECT_EQ(chunks[0].hosts[0].host, 0);
713 SBEntry* entry = chunks[0].hosts[0].entry; 713 SBEntry* entry = chunks[0].hosts[0].entry;
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
796 "{\xd7\x01\xad\xa6\xb5""X\xbb\xcf""F\xcf\x00\xf7""A\xbd" 796 "{\xd7\x01\xad\xa6\xb5""X\xbb\xcf""F\xcf\x00\xf7""A\xbd"
797 "p\x00\xab\xd7\x89\xd3\x00", 48); 797 "p\x00\xab\xd7\x89\xd3\x00", 48);
798 add_testdata[safe_browsing_util::kPhishingList] = std::string( 798 add_testdata[safe_browsing_util::kPhishingList] = std::string(
799 "a:301377:4:9\n\xdb\xe0\xaa\x8e\x01\x85\xba\xb2\x9e", 22); 799 "a:301377:4:9\n\xdb\xe0\xaa\x8e\x01\x85\xba\xb2\x9e", 22);
800 add_testdata[safe_browsing_util::kBinUrlList] = std::string( 800 add_testdata[safe_browsing_util::kBinUrlList] = std::string(
801 "a:19420:4:18\n_\x92\x9e\xcd\x01\x03""}I\xa2\\3\xe6""h\x01\xee" 801 "a:19420:4:18\n_\x92\x9e\xcd\x01\x03""}I\xa2\\3\xe6""h\x01\xee"
802 "H\xf6\xe4", 31); 802 "H\xf6\xe4", 31);
803 add_testdata[safe_browsing_util::kSideEffectFreeWhitelist] = std::string( 803 add_testdata[safe_browsing_util::kSideEffectFreeWhitelist] = std::string(
804 "a:1818:4:9\n\x85\xd0\xfe""i\x01""}\x98\xb1\xe5", 20); 804 "a:1818:4:9\n\x85\xd0\xfe""i\x01""}\x98\xb1\xe5", 20);
805 // goog-*-digestvar lists have no host-key data. 805 // goog-*-digestvar lists have no host-key data.
806 add_testdata[safe_browsing_util::kBinHashList] = std::string(
807 "a:5:4:4\nBBBB", 12);
808 add_testdata[safe_browsing_util::kExtensionBlacklist] = std::string( 806 add_testdata[safe_browsing_util::kExtensionBlacklist] = std::string(
809 "a:81:4:8\nhleedfcc", 17); 807 "a:81:4:8\nhleedfcc", 17);
810 // goog-*-sha256 lists have host-keys but they only contains 808 // goog-*-sha256 lists have host-keys but they only contains
811 // full-length entires. 809 // full-length entires.
812 add_testdata[safe_browsing_util::kCsdWhiteList] = std::string( 810 add_testdata[safe_browsing_util::kCsdWhiteList] = std::string(
813 "a:35:32:37\n\x06\xf9\xb1\xaf\x01\x06\xf9\xb1\xaf""5\xc""9!\x17\x1e" 811 "a:35:32:37\n\x06\xf9\xb1\xaf\x01\x06\xf9\xb1\xaf""5\xc""9!\x17\x1e"
814 "*-\xc9"",*>YSl6\xf9""B\xb8\x96""O\x98""r\xf2\xd5\x8d\xe3""T\x99", 48); 812 "*-\xc9"",*>YSl6\xf9""B\xb8\x96""O\x98""r\xf2\xd5\x8d\xe3""T\x99", 48);
815 // goog-*-digest256 has no host-keys and contains only full-length 813 // goog-*-digest256 has no host-keys and contains only full-length
816 // hashes. 814 // hashes.
817 add_testdata[safe_browsing_util::kDownloadWhiteList] = std::string( 815 add_testdata[safe_browsing_util::kDownloadWhiteList] = std::string(
818 "a:42:32:32\n\xc8\xec\x9f\x9c\x9b\x9a"",\x82""G:F(\xe9\xad\x9c""b$\x8a" 816 "a:42:32:32\n\xc8\xec\x9f\x9c\x9b\x9a"",\x82""G:F(\xe9\xad\x9c""b$\x8a"
819 "\xba""%\x19\xae""c\x03\x87""~\xd1\xd3""bvC\xfd", 43); 817 "\xba""%\x19\xae""c\x03\x87""~\xd1\xd3""bvC\xfd", 43);
820 add_testdata[safe_browsing_util::kIPBlacklist] = std::string( 818 add_testdata[safe_browsing_util::kIPBlacklist] = std::string(
821 "a:12:32:32\n8\x99\x17\xda\xec""+i`\x1a\xb3""8pVh\n$\x01\xd1\x12" 819 "a:12:32:32\n8\x99\x17\xda\xec""+i`\x1a\xb3""8pVh\n$\x01\xd1\x12"
822 ":\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 43); 820 ":\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 43);
823 821
824 std::map<std::string, std::string> sub_testdata; 822 std::map<std::string, std::string> sub_testdata;
825 // goog-*-shavar lists have a host-key, add number followed by zero or more 823 // goog-*-shavar lists have a host-key, add number followed by zero or more
826 // prefixes. 824 // prefixes.
827 sub_testdata[safe_browsing_util::kMalwareList] = std::string( 825 sub_testdata[safe_browsing_util::kMalwareList] = std::string(
828 "s:122930:4:9\n\x85""!_\x13\x00\x00\x01\xf1\xa2", 22); 826 "s:122930:4:9\n\x85""!_\x13\x00\x00\x01\xf1\xa2", 22);
829 sub_testdata[safe_browsing_util::kPhishingList] = std::string( 827 sub_testdata[safe_browsing_util::kPhishingList] = std::string(
830 "s:150181:4:9\nr\x90""zt\x00\x00\x04\x9f""@", 22); 828 "s:150181:4:9\nr\x90""zt\x00\x00\x04\x9f""@", 22);
831 sub_testdata[safe_browsing_util::kBinUrlList] = std::string( 829 sub_testdata[safe_browsing_util::kBinUrlList] = std::string(
832 "s:3:4:13\nHOST\x01""####BBBB", 22); 830 "s:3:4:13\nHOST\x01""####BBBB", 22);
833 sub_testdata[safe_browsing_util::kSideEffectFreeWhitelist] = std::string( 831 sub_testdata[safe_browsing_util::kSideEffectFreeWhitelist] = std::string(
834 "s:4:4:9\nHOST\x00""####", 17); 832 "s:4:4:9\nHOST\x00""####", 17);
835 // goog-*-digestvar lists have no host-key data. 833 // goog-*-digestvar lists have no host-key data.
836 sub_testdata[safe_browsing_util::kBinHashList] = std::string(
837 "s:5:4:8\n####BBBB", 16);
838 sub_testdata[safe_browsing_util::kExtensionBlacklist] = std::string( 834 sub_testdata[safe_browsing_util::kExtensionBlacklist] = std::string(
839 "s:3:4:8\n\x00\x00\x00""%pgkc", 16); 835 "s:3:4:8\n\x00\x00\x00""%pgkc", 16);
840 // goog-*-sha256 lists have host-keys but they only contains 836 // goog-*-sha256 lists have host-keys but they only contains
841 // full-length entires. 837 // full-length entires.
842 sub_testdata[safe_browsing_util::kCsdWhiteList] = std::string( 838 sub_testdata[safe_browsing_util::kCsdWhiteList] = std::string(
843 "s:1:32:41\n\x1a""\"[\n\x01\x00\x00\x00\x15\x1""a\"[\n\xe9\x81""P\x11" 839 "s:1:32:41\n\x1a""\"[\n\x01\x00\x00\x00\x15\x1""a\"[\n\xe9\x81""P\x11"
844 "LR\xcb""3\x00""B\x90\xb3\x15""K\xf5\xdc\xd0""V\xc2""aI\x1e""-\xc8" 840 "LR\xcb""3\x00""B\x90\xb3\x15""K\xf5\xdc\xd0""V\xc2""aI\x1e""-\xc8"
845 "\xce"":\t\x01", 51); 841 "\xce"":\t\x01", 51);
846 // goog-*-digest256 has no host-keys and contains only full-length 842 // goog-*-digest256 has no host-keys and contains only full-length
847 // hashes. 843 // hashes.
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
884 chunk_data.data(), 880 chunk_data.data(),
885 static_cast<int>(chunk_data.length()), 881 static_cast<int>(chunk_data.length()),
886 &chunks)) 882 &chunks))
887 << "Unable to parse sub chunk data for listname: " 883 << "Unable to parse sub chunk data for listname: "
888 << listname; 884 << listname;
889 ASSERT_EQ(chunks.size(), 1U); 885 ASSERT_EQ(chunks.size(), 1U);
890 EXPECT_FALSE(chunks[0].is_add); 886 EXPECT_FALSE(chunks[0].is_add);
891 } 887 }
892 } 888 }
893 } 889 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698