• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
3 // found in the LICENSE file.
4 
5 #ifndef TOOLS_IPC_FUZZER_MESSAGE_LIB_MESSAGE_FILE_FORMAT_H_
6 #define TOOLS_IPC_FUZZER_MESSAGE_LIB_MESSAGE_FILE_FORMAT_H_
7 
8 #include "base/basictypes.h"
9 
10 // Message file contains IPC messages and message names. Each message type
11 // has a NameTableEntry mapping the type to a name.
12 //
13 // |========================|
14 // | FileHeader             |
15 // |========================|
16 // | Message                |
17 // |------------------------|
18 // | Message                |
19 // |------------------------|
20 // | ...                    |
21 // |========================|
22 // | NameTableEntry         |
23 // |------------------------|
24 // | NameTableEntry         |
25 // |------------------------|
26 // | ...                    |
27 // |------------------------|
28 // | type = 0x0002070f      |
29 // | string_table_offset = ----+
30 // |------------------------|  |
31 // | ...                    |  |
32 // |========================|  |
33 // | message name           |  |
34 // |------------------------|  |
35 // | message name           |  |
36 // |------------------------|  |
37 // | ...                    |  |
38 // |------------------------|  |
39 // | "FrameHostMsg_OpenURL" <--+
40 // |------------------------|
41 // | ...                    |
42 // |========================|
43 
44 namespace ipc_fuzzer {
45 
46 struct FileHeader {
47   static const uint32 kMagicValue = 0x1bcf11ee;
48   static const uint32 kCurrentVersion = 1;
49 
50   uint32 magic;
51   uint32 version;
52   uint32 message_count;
53   uint32 name_count;
54 };
55 
56 struct NameTableEntry {
57   uint32 type;
58   uint32 string_table_offset;
59 };
60 
61 }  // namespace ipc_fuzzer
62 
63 #endif  // TOOLS_IPC_FUZZER_MESSAGE_LIB_MESSAGE_FILE_FORMAT_H_
64