| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 <stdlib.h> | 5 #include <stdlib.h> |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <iostream> | 8 #include <iostream> |
| 9 #include <ostream> | 9 #include <ostream> |
| 10 #include <set> | 10 #include <set> |
| (...skipping 643 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 654 default: | 654 default: |
| 655 break; | 655 break; |
| 656 } | 656 } |
| 657 } | 657 } |
| 658 --g_depth; | 658 --g_depth; |
| 659 return true; | 659 return true; |
| 660 } | 660 } |
| 661 }; | 661 }; |
| 662 | 662 |
| 663 template <> | 663 template <> |
| 664 struct GenerateTraits<GURL> { | |
| 665 static bool Generate(GURL *p, Generator* generator) { | |
| 666 const char url_chars[] = "Ahtp0:/.?+\\%&#"; | |
| 667 size_t count = RandInRange(100); | |
| 668 std::string random_url; | |
| 669 for (size_t i = 0; i < count; ++i) | |
| 670 random_url += url_chars[RandInRange(sizeof(url_chars) - 1)]; | |
| 671 int selector = RandInRange(10); | |
| 672 if (selector == 0) | |
| 673 random_url = std::string("http://") + random_url; | |
| 674 else if (selector == 1) | |
| 675 random_url = std::string("file://") + random_url; | |
| 676 else if (selector == 2) | |
| 677 random_url = std::string("javascript:") + random_url; | |
| 678 else if (selector == 2) | |
| 679 random_url = std::string("data:") + random_url; | |
| 680 *p = GURL(random_url); | |
| 681 return true; | |
| 682 } | |
| 683 }; | |
| 684 | |
| 685 // FIXME: Actually generate something. | |
| 686 template <> | |
| 687 struct GenerateTraits<SkBitmap> { | |
| 688 static bool Generate(SkBitmap* p, Generator* generator) { | |
| 689 *p = SkBitmap(); | |
| 690 return true; | |
| 691 } | |
| 692 }; | |
| 693 | |
| 694 template <> | |
| 695 struct GenerateTraits<cc::CompositorFrame> { | 664 struct GenerateTraits<cc::CompositorFrame> { |
| 696 // FIXME: this should actually generate something | 665 // FIXME: this should actually generate something |
| 697 static bool Generate(cc::CompositorFrame* p, Generator* generator) { | 666 static bool Generate(cc::CompositorFrame* p, Generator* generator) { |
| 698 return true; | 667 return true; |
| 699 } | 668 } |
| 700 }; | 669 }; |
| 701 | 670 |
| 702 template <> | 671 template <> |
| 703 struct GenerateTraits<cc::CompositorFrameAck> { | 672 struct GenerateTraits<cc::CompositorFrameAck> { |
| 704 // FIXME: this should actually generate something | 673 // FIXME: this should actually generate something |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 820 static bool Generate(content::PageState *p, Generator* generator) { | 789 static bool Generate(content::PageState *p, Generator* generator) { |
| 821 std::string junk; | 790 std::string junk; |
| 822 if (!GenerateParam(&junk, generator)) | 791 if (!GenerateParam(&junk, generator)) |
| 823 return false; | 792 return false; |
| 824 *p = content::PageState::CreateFromEncodedData(junk); | 793 *p = content::PageState::CreateFromEncodedData(junk); |
| 825 return true; | 794 return true; |
| 826 } | 795 } |
| 827 }; | 796 }; |
| 828 | 797 |
| 829 template <> | 798 template <> |
| 799 struct GenerateTraits<dns_prefetch::LookupRequest> { |
| 800 static bool Generate(dns_prefetch::LookupRequest* p, Generator* generator) { |
| 801 dns_prefetch::LookupRequest request; |
| 802 if (!GenerateParam(&request.hostname_list, generator)) |
| 803 return false; |
| 804 *p = request; |
| 805 return true; |
| 806 } |
| 807 }; |
| 808 |
| 809 template <> |
| 810 struct GenerateTraits<extensions::URLPatternSet> { |
| 811 static bool Generate(extensions::URLPatternSet* p, Generator* generator) { |
| 812 std::set<URLPattern> patterns; |
| 813 if (!GenerateParam(&patterns, generator)) |
| 814 return false; |
| 815 *p = extensions::URLPatternSet(patterns); |
| 816 return true; |
| 817 } |
| 818 }; |
| 819 |
| 820 template <> |
| 830 struct GenerateTraits<gpu::Mailbox> { | 821 struct GenerateTraits<gpu::Mailbox> { |
| 831 static bool Generate(gpu::Mailbox *p, Generator* generator) { | 822 static bool Generate(gpu::Mailbox *p, Generator* generator) { |
| 832 generator->GenerateBytes(p->name, sizeof(p->name)); | 823 generator->GenerateBytes(p->name, sizeof(p->name)); |
| 833 return true; | 824 return true; |
| 834 } | 825 } |
| 835 }; | 826 }; |
| 836 | 827 |
| 837 template <> | 828 template <> |
| 829 struct GenerateTraits<gpu::MailboxHolder> { |
| 830 static bool Generate(gpu::MailboxHolder *p, Generator* generator) { |
| 831 gpu::Mailbox mailbox; |
| 832 uint32_t texture_target; |
| 833 uint32_t sync_point; |
| 834 if (!GenerateParam(&mailbox, generator)) |
| 835 return false; |
| 836 if (!GenerateParam(&texture_target, generator)) |
| 837 return false; |
| 838 if (!GenerateParam(&sync_point, generator)) |
| 839 return false; |
| 840 *p = gpu::MailboxHolder(mailbox, texture_target, sync_point); |
| 841 return true; |
| 842 } |
| 843 }; |
| 844 |
| 845 template <> |
| 846 struct GenerateTraits<gpu::ValueState> { |
| 847 static bool Generate(gpu::ValueState* p, Generator* generator) { |
| 848 gpu::ValueState state; |
| 849 for (int i = 0; i < 4; i++) { |
| 850 if (!GenerateParam(&state.float_value[i], generator)) |
| 851 return false; |
| 852 if (!GenerateParam(&state.int_value[i], generator)) |
| 853 return false; |
| 854 } |
| 855 *p = state; |
| 856 return true; |
| 857 } |
| 858 }; |
| 859 |
| 860 template <> |
| 861 struct GenerateTraits<GURL> { |
| 862 static bool Generate(GURL *p, Generator* generator) { |
| 863 const char url_chars[] = "Ahtp0:/.?+\\%&#"; |
| 864 size_t count = RandInRange(100); |
| 865 std::string random_url; |
| 866 for (size_t i = 0; i < count; ++i) |
| 867 random_url += url_chars[RandInRange(sizeof(url_chars) - 1)]; |
| 868 int selector = RandInRange(10); |
| 869 if (selector == 0) |
| 870 random_url = std::string("http://") + random_url; |
| 871 else if (selector == 1) |
| 872 random_url = std::string("file://") + random_url; |
| 873 else if (selector == 2) |
| 874 random_url = std::string("javascript:") + random_url; |
| 875 else if (selector == 2) |
| 876 random_url = std::string("data:") + random_url; |
| 877 *p = GURL(random_url); |
| 878 return true; |
| 879 } |
| 880 }; |
| 881 |
| 882 template <> |
| 838 struct GenerateTraits<media::AudioParameters> { | 883 struct GenerateTraits<media::AudioParameters> { |
| 839 static bool Generate(media::AudioParameters *p, Generator* generator) { | 884 static bool Generate(media::AudioParameters *p, Generator* generator) { |
| 840 int format; | 885 int format; |
| 841 int channel_layout; | 886 int channel_layout; |
| 842 int sample_rate; | 887 int sample_rate; |
| 843 int bits_per_sample; | 888 int bits_per_sample; |
| 844 int frames_per_buffer; | 889 int frames_per_buffer; |
| 845 int channels; | 890 int channels; |
| 846 int effects; | 891 int effects; |
| 847 if (!GenerateParam(&format, generator)) | 892 if (!GenerateParam(&format, generator)) |
| (...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1150 webrtc::DesktopVector vector; | 1195 webrtc::DesktopVector vector; |
| 1151 if (!GenerateParam(&size, generator)) | 1196 if (!GenerateParam(&size, generator)) |
| 1152 return false; | 1197 return false; |
| 1153 if (!GenerateParam(&vector, generator)) | 1198 if (!GenerateParam(&vector, generator)) |
| 1154 return false; | 1199 return false; |
| 1155 *p = remoting::ScreenResolution(size, vector); | 1200 *p = remoting::ScreenResolution(size, vector); |
| 1156 return true; | 1201 return true; |
| 1157 } | 1202 } |
| 1158 }; | 1203 }; |
| 1159 | 1204 |
| 1205 // FIXME: Actually generate something. |
| 1206 template <> |
| 1207 struct GenerateTraits<SkBitmap> { |
| 1208 static bool Generate(SkBitmap* p, Generator* generator) { |
| 1209 *p = SkBitmap(); |
| 1210 return true; |
| 1211 } |
| 1212 }; |
| 1213 |
| 1214 template <> |
| 1215 struct GenerateTraits<url::Origin> { |
| 1216 static bool Generate(url::Origin* p, Generator* generator) { |
| 1217 std::string origin; |
| 1218 if (!GenerateParam(&origin, generator)) |
| 1219 return false; |
| 1220 *p = url::Origin(origin); |
| 1221 return true; |
| 1222 } |
| 1223 }; |
| 1224 |
| 1160 template <> | 1225 template <> |
| 1161 struct GenerateTraits<webrtc::DesktopSize> { | 1226 struct GenerateTraits<webrtc::DesktopSize> { |
| 1162 static bool Generate(webrtc::DesktopSize* p, Generator* generator) { | 1227 static bool Generate(webrtc::DesktopSize* p, Generator* generator) { |
| 1163 int32_t width; | 1228 int32_t width; |
| 1164 int32_t height; | 1229 int32_t height; |
| 1165 if (!GenerateParam(&width, generator)) | 1230 if (!GenerateParam(&width, generator)) |
| 1166 return false; | 1231 return false; |
| 1167 if (!GenerateParam(&height, generator)) | 1232 if (!GenerateParam(&height, generator)) |
| 1168 return false; | 1233 return false; |
| 1169 *p = webrtc::DesktopSize(width, height); | 1234 *p = webrtc::DesktopSize(width, height); |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1414 return EXIT_FAILURE; | 1479 return EXIT_FAILURE; |
| 1415 | 1480 |
| 1416 return EXIT_SUCCESS; | 1481 return EXIT_SUCCESS; |
| 1417 } | 1482 } |
| 1418 | 1483 |
| 1419 } // namespace ipc_fuzzer | 1484 } // namespace ipc_fuzzer |
| 1420 | 1485 |
| 1421 int main(int argc, char** argv) { | 1486 int main(int argc, char** argv) { |
| 1422 return ipc_fuzzer::GenerateMain(argc, argv); | 1487 return ipc_fuzzer::GenerateMain(argc, argv); |
| 1423 } | 1488 } |
| OLD | NEW |