| 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 |