| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 <iostream> | 5 #include <iostream> |
| 6 #include <set> | 6 #include <set> |
| 7 #include <string> | 7 #include <string> |
| 8 #include <utility> | 8 #include <utility> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 202 template <> | 202 template <> |
| 203 struct FuzzTraits<base::string16> { | 203 struct FuzzTraits<base::string16> { |
| 204 static bool Fuzz(base::string16* p, Fuzzer* fuzzer) { | 204 static bool Fuzz(base::string16* p, Fuzzer* fuzzer) { |
| 205 fuzzer->FuzzString16(p); | 205 fuzzer->FuzzString16(p); |
| 206 return true; | 206 return true; |
| 207 } | 207 } |
| 208 }; | 208 }; |
| 209 | 209 |
| 210 // Specializations for tuples. | 210 // Specializations for tuples. |
| 211 template <> | 211 template <> |
| 212 struct FuzzTraits<Tuple<>> { | 212 struct FuzzTraits<base::Tuple<>> { |
| 213 static bool Fuzz(Tuple<>* p, Fuzzer* fuzzer) { | 213 static bool Fuzz(base::Tuple<>* p, Fuzzer* fuzzer) { |
| 214 return true; | 214 return true; |
| 215 } | 215 } |
| 216 }; | 216 }; |
| 217 | 217 |
| 218 template <class A> | 218 template <class A> |
| 219 struct FuzzTraits<Tuple<A>> { | 219 struct FuzzTraits<base::Tuple<A>> { |
| 220 static bool Fuzz(Tuple<A>* p, Fuzzer* fuzzer) { | 220 static bool Fuzz(base::Tuple<A>* p, Fuzzer* fuzzer) { |
| 221 return FuzzParam(&get<0>(*p), fuzzer); | 221 return FuzzParam(&base::get<0>(*p), fuzzer); |
| 222 } | 222 } |
| 223 }; | 223 }; |
| 224 | 224 |
| 225 template <class A, class B> | 225 template <class A, class B> |
| 226 struct FuzzTraits<Tuple<A, B>> { | 226 struct FuzzTraits<base::Tuple<A, B>> { |
| 227 static bool Fuzz(Tuple<A, B>* p, Fuzzer* fuzzer) { | 227 static bool Fuzz(base::Tuple<A, B>* p, Fuzzer* fuzzer) { |
| 228 return | 228 return |
| 229 FuzzParam(&get<0>(*p), fuzzer) && | 229 FuzzParam(&base::get<0>(*p), fuzzer) && |
| 230 FuzzParam(&get<1>(*p), fuzzer); | 230 FuzzParam(&base::get<1>(*p), fuzzer); |
| 231 } | 231 } |
| 232 }; | 232 }; |
| 233 | 233 |
| 234 template <class A, class B, class C> | 234 template <class A, class B, class C> |
| 235 struct FuzzTraits<Tuple<A, B, C>> { | 235 struct FuzzTraits<base::Tuple<A, B, C>> { |
| 236 static bool Fuzz(Tuple<A, B, C>* p, Fuzzer* fuzzer) { | 236 static bool Fuzz(base::Tuple<A, B, C>* p, Fuzzer* fuzzer) { |
| 237 return | 237 return |
| 238 FuzzParam(&get<0>(*p), fuzzer) && | 238 FuzzParam(&base::get<0>(*p), fuzzer) && |
| 239 FuzzParam(&get<1>(*p), fuzzer) && | 239 FuzzParam(&base::get<1>(*p), fuzzer) && |
| 240 FuzzParam(&get<2>(*p), fuzzer); | 240 FuzzParam(&base::get<2>(*p), fuzzer); |
| 241 } | 241 } |
| 242 }; | 242 }; |
| 243 | 243 |
| 244 template <class A, class B, class C, class D> | 244 template <class A, class B, class C, class D> |
| 245 struct FuzzTraits<Tuple<A, B, C, D>> { | 245 struct FuzzTraits<base::Tuple<A, B, C, D>> { |
| 246 static bool Fuzz(Tuple<A, B, C, D>* p, Fuzzer* fuzzer) { | 246 static bool Fuzz(base::Tuple<A, B, C, D>* p, Fuzzer* fuzzer) { |
| 247 return | 247 return |
| 248 FuzzParam(&get<0>(*p), fuzzer) && | 248 FuzzParam(&base::get<0>(*p), fuzzer) && |
| 249 FuzzParam(&get<1>(*p), fuzzer) && | 249 FuzzParam(&base::get<1>(*p), fuzzer) && |
| 250 FuzzParam(&get<2>(*p), fuzzer) && | 250 FuzzParam(&base::get<2>(*p), fuzzer) && |
| 251 FuzzParam(&get<3>(*p), fuzzer); | 251 FuzzParam(&base::get<3>(*p), fuzzer); |
| 252 } | 252 } |
| 253 }; | 253 }; |
| 254 | 254 |
| 255 template <class A, class B, class C, class D, class E> | 255 template <class A, class B, class C, class D, class E> |
| 256 struct FuzzTraits<Tuple<A, B, C, D, E>> { | 256 struct FuzzTraits<base::Tuple<A, B, C, D, E>> { |
| 257 static bool Fuzz(Tuple<A, B, C, D, E>* p, Fuzzer* fuzzer) { | 257 static bool Fuzz(base::Tuple<A, B, C, D, E>* p, Fuzzer* fuzzer) { |
| 258 return | 258 return |
| 259 FuzzParam(&get<0>(*p), fuzzer) && | 259 FuzzParam(&base::get<0>(*p), fuzzer) && |
| 260 FuzzParam(&get<1>(*p), fuzzer) && | 260 FuzzParam(&base::get<1>(*p), fuzzer) && |
| 261 FuzzParam(&get<2>(*p), fuzzer) && | 261 FuzzParam(&base::get<2>(*p), fuzzer) && |
| 262 FuzzParam(&get<3>(*p), fuzzer) && | 262 FuzzParam(&base::get<3>(*p), fuzzer) && |
| 263 FuzzParam(&get<4>(*p), fuzzer); | 263 FuzzParam(&base::get<4>(*p), fuzzer); |
| 264 } | 264 } |
| 265 }; | 265 }; |
| 266 | 266 |
| 267 // Specializations for containers. | 267 // Specializations for containers. |
| 268 template <class A> | 268 template <class A> |
| 269 struct FuzzTraits<std::vector<A> > { | 269 struct FuzzTraits<std::vector<A> > { |
| 270 static bool Fuzz(std::vector<A>* p, Fuzzer* fuzzer) { | 270 static bool Fuzz(std::vector<A>* p, Fuzzer* fuzzer) { |
| 271 ++g_depth; | 271 ++g_depth; |
| 272 size_t count = p->size(); | 272 size_t count = p->size(); |
| 273 if (fuzzer->ShouldGenerate()) { | 273 if (fuzzer->ShouldGenerate()) { |
| (...skipping 1772 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2046 } \ | 2046 } \ |
| 2047 else if (!new_msg) { \ | 2047 else if (!new_msg) { \ |
| 2048 std::cerr << "Don't know how to handle " << #name << "\n"; \ | 2048 std::cerr << "Don't know how to handle " << #name << "\n"; \ |
| 2049 } \ | 2049 } \ |
| 2050 return new_msg; \ | 2050 return new_msg; \ |
| 2051 } | 2051 } |
| 2052 | 2052 |
| 2053 #define MAX_FAKE_ROUTING_ID 15 | 2053 #define MAX_FAKE_ROUTING_ID 15 |
| 2054 | 2054 |
| 2055 #define IPC_MEMBERS_IN_0(p) | 2055 #define IPC_MEMBERS_IN_0(p) |
| 2056 #define IPC_MEMBERS_IN_1(p) get<0>(p) | 2056 #define IPC_MEMBERS_IN_1(p) base::get<0>(p) |
| 2057 #define IPC_MEMBERS_IN_2(p) get<0>(p), get<1>(p) | 2057 #define IPC_MEMBERS_IN_2(p) base::get<0>(p), base::get<1>(p) |
| 2058 #define IPC_MEMBERS_IN_3(p) get<0>(p), get<1>(p), get<2>(p) | 2058 #define IPC_MEMBERS_IN_3(p) base::get<0>(p), base::get<1>(p), base::get<2>(p) |
| 2059 #define IPC_MEMBERS_IN_4(p) get<0>(p), get<1>(p), get<2>(p), get<3>(p) | 2059 #define IPC_MEMBERS_IN_4(p) base::get<0>(p), base::get<1>(p), base::get<2>(p), \ |
| 2060 #define IPC_MEMBERS_IN_5(p) get<0>(p), get<1>(p), get<2>(p), get<3>(p), \ | 2060 base::get<3>(p) |
| 2061 get<4>(p) | 2061 #define IPC_MEMBERS_IN_5(p) base::get<0>(p), base::get<1>(p), base::get<2>(p), \ |
| 2062 base::get<3>(p), base::get<4>(p) |
| 2062 | 2063 |
| 2063 #define IPC_MEMBERS_OUT_0() | 2064 #define IPC_MEMBERS_OUT_0() |
| 2064 #define IPC_MEMBERS_OUT_1() NULL | 2065 #define IPC_MEMBERS_OUT_1() NULL |
| 2065 #define IPC_MEMBERS_OUT_2() NULL, NULL | 2066 #define IPC_MEMBERS_OUT_2() NULL, NULL |
| 2066 #define IPC_MEMBERS_OUT_3() NULL, NULL, NULL | 2067 #define IPC_MEMBERS_OUT_3() NULL, NULL, NULL |
| 2067 #define IPC_MEMBERS_OUT_4() NULL, NULL, NULL, NULL | 2068 #define IPC_MEMBERS_OUT_4() NULL, NULL, NULL, NULL |
| 2068 #define IPC_MEMBERS_OUT_5() NULL, NULL, NULL, NULL, NULL | 2069 #define IPC_MEMBERS_OUT_5() NULL, NULL, NULL, NULL, NULL |
| 2069 | 2070 |
| 2070 #include "tools/ipc_fuzzer/message_lib/all_messages.h" | 2071 #include "tools/ipc_fuzzer/message_lib/all_messages.h" |
| 2071 #include "tools/ipc_fuzzer/message_lib/all_message_null_macros.h" | 2072 #include "tools/ipc_fuzzer/message_lib/all_message_null_macros.h" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 2082 #include "tools/ipc_fuzzer/message_lib/all_message_null_macros.h" | 2083 #include "tools/ipc_fuzzer/message_lib/all_message_null_macros.h" |
| 2083 #undef IPC_MESSAGE_DECL | 2084 #undef IPC_MESSAGE_DECL |
| 2084 #define IPC_MESSAGE_DECL(kind, type, name, in, out, ilist, olist) \ | 2085 #define IPC_MESSAGE_DECL(kind, type, name, in, out, ilist, olist) \ |
| 2085 (*map)[static_cast<uint32>(name::ID)] = fuzzer_for_##name; | 2086 (*map)[static_cast<uint32>(name::ID)] = fuzzer_for_##name; |
| 2086 | 2087 |
| 2087 void PopulateFuzzerFunctionMap(FuzzerFunctionMap* map) { | 2088 void PopulateFuzzerFunctionMap(FuzzerFunctionMap* map) { |
| 2088 #include "tools/ipc_fuzzer/message_lib/all_messages.h" | 2089 #include "tools/ipc_fuzzer/message_lib/all_messages.h" |
| 2089 } | 2090 } |
| 2090 | 2091 |
| 2091 } // namespace ipc_fuzzer | 2092 } // namespace ipc_fuzzer |
| OLD | NEW |