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

Side by Side Diff: chrome/tools/ipclist/ipcfuzz.cc

Issue 15841011: Implement off-the-wire validation scheme for enum types. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add () around macro parameter. Created 7 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 | Annotate | Revision Log
« no previous file with comments | « chrome/common/common_param_traits_macros.h ('k') | ipc/ipc_message_macros.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #include <algorithm> 5 #include <algorithm>
6 #include <ostream> 6 #include <ostream>
7 #include <set> 7 #include <set>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after
503 static void CopyMessageID(PickleCracker *dst, PickleCracker *src) { 503 static void CopyMessageID(PickleCracker *dst, PickleCracker *src) {
504 memcpy(dst->mutable_payload(), src->payload(), sizeof(int)); 504 memcpy(dst->mutable_payload(), src->payload(), sizeof(int));
505 } 505 }
506 }; 506 };
507 507
508 // Redefine macros to generate fuzzing from traits declarations. 508 // Redefine macros to generate fuzzing from traits declarations.
509 // Null out all the macros that need nulling. 509 // Null out all the macros that need nulling.
510 #include "ipc/ipc_message_null_macros.h" 510 #include "ipc/ipc_message_null_macros.h"
511 511
512 // STRUCT declarations cause corresponding STRUCT_TRAITS declarations to occur. 512 // STRUCT declarations cause corresponding STRUCT_TRAITS declarations to occur.
513 #undef IPC_STRUCT_BEGIN
514 #undef IPC_STRUCT_BEGIN_WITH_PARENT 513 #undef IPC_STRUCT_BEGIN_WITH_PARENT
515 #undef IPC_STRUCT_MEMBER 514 #undef IPC_STRUCT_MEMBER
516 #undef IPC_STRUCT_END 515 #undef IPC_STRUCT_END
517 #define IPC_STRUCT_BEGIN_WITH_PARENT(struct_name, parent)\ 516 #define IPC_STRUCT_BEGIN_WITH_PARENT(struct_name, parent)\
518 IPC_STRUCT_BEGIN(struct_name) 517 IPC_STRUCT_TRAITS_BEGIN(struct_name)
519 #define IPC_STRUCT_BEGIN(struct_name) IPC_STRUCT_TRAITS_BEGIN(struct_name)
520 #define IPC_STRUCT_MEMBER(type, name, ...) IPC_STRUCT_TRAITS_MEMBER(name) 518 #define IPC_STRUCT_MEMBER(type, name, ...) IPC_STRUCT_TRAITS_MEMBER(name)
521 #define IPC_STRUCT_END() IPC_STRUCT_TRAITS_END() 519 #define IPC_STRUCT_END() IPC_STRUCT_TRAITS_END()
522 520
523 // Set up so next include will generate fuzz trait classes. 521 // Set up so next include will generate fuzz trait classes.
524 #undef IPC_STRUCT_TRAITS_BEGIN 522 #undef IPC_STRUCT_TRAITS_BEGIN
525 #undef IPC_STRUCT_TRAITS_MEMBER 523 #undef IPC_STRUCT_TRAITS_MEMBER
526 #undef IPC_STRUCT_TRAITS_PARENT 524 #undef IPC_STRUCT_TRAITS_PARENT
527 #undef IPC_STRUCT_TRAITS_END 525 #undef IPC_STRUCT_TRAITS_END
528 #define IPC_STRUCT_TRAITS_BEGIN(struct_name) \ 526 #define IPC_STRUCT_TRAITS_BEGIN(struct_name) \
529 template <> \ 527 template <> \
530 struct FuzzTraits<struct_name> { \ 528 struct FuzzTraits<struct_name> { \
531 static void Fuzz(struct_name *p, IPC::Fuzzer* fuzzer) { \ 529 static void Fuzz(struct_name *p, IPC::Fuzzer* fuzzer) { \
532 530
533 #define IPC_STRUCT_TRAITS_MEMBER(name) \ 531 #define IPC_STRUCT_TRAITS_MEMBER(name) \
534 FuzzParam(&p->name, fuzzer); 532 FuzzParam(&p->name, fuzzer);
535 533
536 #define IPC_STRUCT_TRAITS_PARENT(type) \ 534 #define IPC_STRUCT_TRAITS_PARENT(type) \
537 FuzzParam(static_cast<type*>(p), fuzzer); 535 FuzzParam(static_cast<type*>(p), fuzzer);
538 536
539 #define IPC_STRUCT_TRAITS_END() \ 537 #define IPC_STRUCT_TRAITS_END() \
540 } \ 538 } \
541 }; 539 };
542 540
543 #undef IPC_ENUM_TRAITS 541 #undef IPC_ENUM_TRAITS_VALIDATE
544 #define IPC_ENUM_TRAITS(enum_name) \ 542 #define IPC_ENUM_TRAITS_VALIDATE(enum_name, validation_expression) \
545 template <> \ 543 template <> \
546 struct FuzzTraits<enum_name> { \ 544 struct FuzzTraits<enum_name> { \
547 static void Fuzz(enum_name* p, IPC::Fuzzer* fuzzer) { \ 545 static void Fuzz(enum_name* p, IPC::Fuzzer* fuzzer) { \
548 FuzzParam(reinterpret_cast<int*>(p), fuzzer); \ 546 FuzzParam(reinterpret_cast<int*>(p), fuzzer); \
549 } \ 547 } \
550 }; 548 };
551 549
552 // Bring them into existence. 550 // Bring them into existence.
553 #include "chrome/common/all_messages.h" 551 #include "chrome/common/all_messages.h"
554 #include "content/common/all_messages.h" 552 #include "content/common/all_messages.h"
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
684 682
685 // Entry point avoiding mangled names. 683 // Entry point avoiding mangled names.
686 extern "C" { 684 extern "C" {
687 __attribute__((visibility("default"))) 685 __attribute__((visibility("default")))
688 IPC::ChannelProxy::OutgoingMessageFilter* GetFilter(void); 686 IPC::ChannelProxy::OutgoingMessageFilter* GetFilter(void);
689 } 687 }
690 688
691 IPC::ChannelProxy::OutgoingMessageFilter* GetFilter(void) { 689 IPC::ChannelProxy::OutgoingMessageFilter* GetFilter(void) {
692 return &g_ipcfuzz; 690 return &g_ipcfuzz;
693 } 691 }
OLDNEW
« no previous file with comments | « chrome/common/common_param_traits_macros.h ('k') | ipc/ipc_message_macros.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698