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 #ifndef PPAPI_PROXY_NACL_MESSAGE_SCANNER_H_ | 5 #ifndef PPAPI_PROXY_NACL_MESSAGE_SCANNER_H_ |
6 #define PPAPI_PROXY_NACL_MESSAGE_SCANNER_H_ | 6 #define PPAPI_PROXY_NACL_MESSAGE_SCANNER_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 21 matching lines...) Expand all Loading... |
32 // SerializedHandles in the message into |handles| and if the message must be | 32 // SerializedHandles in the message into |handles| and if the message must be |
33 // rewritten for NaCl, sets |new_msg_ptr| to the new message. If no handles | 33 // rewritten for NaCl, sets |new_msg_ptr| to the new message. If no handles |
34 // are found, |handles| is left unchanged. If no rewriting is needed, | 34 // are found, |handles| is left unchanged. If no rewriting is needed, |
35 // |new_msg_ptr| is left unchanged. | 35 // |new_msg_ptr| is left unchanged. |
36 // | 36 // |
37 // See more explanation in the method definition. | 37 // See more explanation in the method definition. |
38 // | 38 // |
39 // See chrome/nacl/nacl_ipc_adapter.cc for where this is used to help convert | 39 // See chrome/nacl/nacl_ipc_adapter.cc for where this is used to help convert |
40 // native handles to NaClDescs. | 40 // native handles to NaClDescs. |
41 bool ScanMessage(const IPC::Message& msg, | 41 bool ScanMessage(const IPC::Message& msg, |
| 42 uint32_t type, |
42 std::vector<SerializedHandle>* handles, | 43 std::vector<SerializedHandle>* handles, |
43 scoped_ptr<IPC::Message>* new_msg_ptr); | 44 scoped_ptr<IPC::Message>* new_msg_ptr); |
44 | 45 |
45 // Scans an untrusted message for items that require special handling. If the | 46 // Scans an untrusted message for items that require special handling. If the |
46 // message had to be rewritten, sets |new_msg_ptr| to the new message. | 47 // message had to be rewritten, sets |new_msg_ptr| to the new message. |
47 void ScanUntrustedMessage(const IPC::Message& untrusted_msg, | 48 void ScanUntrustedMessage(const IPC::Message& untrusted_msg, |
48 scoped_ptr<IPC::Message>* new_msg_ptr); | 49 scoped_ptr<IPC::Message>* new_msg_ptr); |
49 | 50 |
50 // FileSystem information for quota auditing. | 51 // FileSystem information for quota auditing. |
51 class PPAPI_PROXY_EXPORT FileSystem { | 52 class PPAPI_PROXY_EXPORT FileSystem { |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
92 // plugin writes to greater maximum offsets. | 93 // plugin writes to greater maximum offsets. |
93 int64_t max_written_offset_; | 94 int64_t max_written_offset_; |
94 | 95 |
95 DISALLOW_COPY_AND_ASSIGN(FileIO); | 96 DISALLOW_COPY_AND_ASSIGN(FileIO); |
96 }; | 97 }; |
97 | 98 |
98 FileIO* GetFile(PP_Resource file_io); | 99 FileIO* GetFile(PP_Resource file_io); |
99 | 100 |
100 private: | 101 private: |
101 friend class NaClMessageScannerTest; | 102 friend class NaClMessageScannerTest; |
102 | |
103 void RegisterSyncMessageForReply(const IPC::Message& msg); | |
104 void AuditNestedMessage(PP_Resource resource, | 103 void AuditNestedMessage(PP_Resource resource, |
105 const IPC::Message& msg, | 104 const IPC::Message& msg, |
106 SerializedHandle* handle); | 105 SerializedHandle* handle); |
107 | 106 |
108 // When we send a synchronous message (from untrusted to trusted), we store | |
109 // its type here, so that later we can associate the reply with its type | |
110 // for scanning. | |
111 typedef std::map<int, uint32> PendingSyncMsgMap; | |
112 PendingSyncMsgMap pending_sync_msgs_; | |
113 | |
114 // We intercept FileSystem and FileIO messages to maintain information about | 107 // We intercept FileSystem and FileIO messages to maintain information about |
115 // file systems and open files. This is used by NaClQuotaDescs to calculate | 108 // file systems and open files. This is used by NaClQuotaDescs to calculate |
116 // quota consumption and check it against the reserved amount. | 109 // quota consumption and check it against the reserved amount. |
117 typedef std::map<int32_t, FileSystem*> FileSystemMap; | 110 typedef std::map<int32_t, FileSystem*> FileSystemMap; |
118 FileSystemMap file_systems_; | 111 FileSystemMap file_systems_; |
119 typedef std::map<int32_t, FileIO*> FileIOMap; | 112 typedef std::map<int32_t, FileIO*> FileIOMap; |
120 FileIOMap files_; | 113 FileIOMap files_; |
121 | 114 |
122 DISALLOW_COPY_AND_ASSIGN(NaClMessageScanner); | 115 DISALLOW_COPY_AND_ASSIGN(NaClMessageScanner); |
123 }; | 116 }; |
124 | 117 |
125 } // namespace proxy | 118 } // namespace proxy |
126 } // namespace ppapi | 119 } // namespace ppapi |
127 | 120 |
128 #endif // PPAPI_PROXY_NACL_MESSAGE_SCANNER_H_ | 121 #endif // PPAPI_PROXY_NACL_MESSAGE_SCANNER_H_ |
OLD | NEW |