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 |