| OLD | NEW | 
|    1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |    1 // Copyright (c) 2010 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 SECURE_MEM_H__ |    5 #ifndef SECURE_MEM_H__ | 
|    6 #define SECURE_MEM_H__ |    6 #define SECURE_MEM_H__ | 
|    7  |    7  | 
|    8 #include <stdlib.h> |    8 #include <stdlib.h> | 
|    9 #include "linux_syscall_support.h" |    9 #include "linux_syscall_support.h" | 
|   10  |   10  | 
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  161     // of safety, e.g. for thread exit. |  161     // of safety, e.g. for thread exit. | 
|  162     SEND_LOCKED_SYNC, |  162     SEND_LOCKED_SYNC, | 
|  163   }; |  163   }; | 
|  164  |  164  | 
|  165   // Sends a system call to the trusted thread for execution. |  165   // Sends a system call to the trusted thread for execution. | 
|  166   static void sendSystemCall(const SyscallRequestInfo& rpc, LockType type) { |  166   static void sendSystemCall(const SyscallRequestInfo& rpc, LockType type) { | 
|  167     sendSystemCallInternal(rpc, type); |  167     sendSystemCallInternal(rpc, type); | 
|  168   } |  168   } | 
|  169   template<class T1> static |  169   template<class T1> static | 
|  170   void sendSystemCall(const SyscallRequestInfo& rpc, LockType type, T1 arg1) { |  170   void sendSystemCall(const SyscallRequestInfo& rpc, LockType type, T1 arg1) { | 
|  171     sendSystemCallInternal(rpc, type, (void*)arg1); |  171     sendSystemCallInternal(rpc, type, reinterpret_cast<void*>(arg1)); | 
|  172   } |  172   } | 
|  173   template<class T1, class T2> static |  173   template<class T1, class T2> static | 
|  174   void sendSystemCall(const SyscallRequestInfo& rpc, LockType type, |  174   void sendSystemCall(const SyscallRequestInfo& rpc, LockType type, | 
|  175                       T1 arg1, T2 arg2) { |  175                       T1 arg1, T2 arg2) { | 
|  176     sendSystemCallInternal(rpc, type, (void*)arg1, (void*)arg2); |  176     sendSystemCallInternal(rpc, type, reinterpret_cast<void*>(arg1), | 
 |  177                            reinterpret_cast<void*>(arg2)); | 
|  177   } |  178   } | 
|  178   template<class T1, class T2, class T3> static |  179   template<class T1, class T2, class T3> static | 
|  179   void sendSystemCall(const SyscallRequestInfo& rpc, LockType type, |  180   void sendSystemCall(const SyscallRequestInfo& rpc, LockType type, | 
|  180                       T1 arg1, T2 arg2, T3 arg3) { |  181                       T1 arg1, T2 arg2, T3 arg3) { | 
|  181     sendSystemCallInternal(rpc, type, (void*)arg1, (void*)arg2, (void*)arg3); |  182     sendSystemCallInternal(rpc, type, reinterpret_cast<void*>(arg1), | 
 |  183                            reinterpret_cast<void*>(arg2), | 
 |  184                            reinterpret_cast<void*>(arg3)); | 
|  182   } |  185   } | 
|  183   template<class T1, class T2, class T3, class T4> static |  186   template<class T1, class T2, class T3, class T4> static | 
|  184   void sendSystemCall(const SyscallRequestInfo& rpc, LockType type, |  187   void sendSystemCall(const SyscallRequestInfo& rpc, LockType type, | 
|  185                       T1 arg1, T2 arg2, T3 arg3, T4 arg4) { |  188                       T1 arg1, T2 arg2, T3 arg3, T4 arg4) { | 
|  186     sendSystemCallInternal(rpc, type, (void*)arg1, (void*)arg2, (void*)arg3, |  189     sendSystemCallInternal(rpc, type, reinterpret_cast<void*>(arg1), | 
|  187                            (void*)arg4); |  190                            reinterpret_cast<void*>(arg2), | 
 |  191                            reinterpret_cast<void*>(arg3), | 
 |  192                            reinterpret_cast<void*>(arg4)); | 
|  188   } |  193   } | 
|  189   template<class T1, class T2, class T3, class T4, class T5> static |  194   template<class T1, class T2, class T3, class T4, class T5> static | 
|  190   void sendSystemCall(const SyscallRequestInfo& rpc, LockType type, |  195   void sendSystemCall(const SyscallRequestInfo& rpc, LockType type, | 
|  191                       T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) { |  196                       T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) { | 
|  192     sendSystemCallInternal(rpc, type, (void*)arg1, (void*)arg2, (void*)arg3, |  197     sendSystemCallInternal(rpc, type, reinterpret_cast<void*>(arg1), | 
|  193                            (void*)arg4, (void*)arg5); |  198                            reinterpret_cast<void*>(arg2), | 
 |  199                            reinterpret_cast<void*>(arg3), | 
 |  200                            reinterpret_cast<void*>(arg4), | 
 |  201                            reinterpret_cast<void*>(arg5)); | 
|  194   } |  202   } | 
|  195   template<class T1, class T2, class T3, class T4, class T5, class T6> static |  203   template<class T1, class T2, class T3, class T4, class T5, class T6> static | 
|  196   void sendSystemCall(const SyscallRequestInfo& rpc, LockType type, |  204   void sendSystemCall(const SyscallRequestInfo& rpc, LockType type, | 
|  197                       T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, |  205                       T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, | 
|  198                       Args* newSecureMem = 0) { |  206                       Args* newSecureMem = 0) { | 
|  199     sendSystemCallInternal(rpc, type, (void*)arg1, (void*)arg2, (void*)arg3, |  207     sendSystemCallInternal(rpc, type, reinterpret_cast<void*>(arg1), | 
|  200                            (void*)arg4, (void*)arg5, (void*)arg6, |  208                            reinterpret_cast<void*>(arg2), | 
|  201                            newSecureMem); |  209                            reinterpret_cast<void*>(arg3), | 
 |  210                            reinterpret_cast<void*>(arg4), | 
 |  211                            reinterpret_cast<void*>(arg5), | 
 |  212                            reinterpret_cast<void*>(arg6), newSecureMem); | 
|  202   } |  213   } | 
|  203  |  214  | 
|  204  private: |  215  private: | 
|  205   // Allows the trusted process to check whether the parent process still |  216   // Allows the trusted process to check whether the parent process still | 
|  206   // exists. If it doesn't, kill the trusted process. |  217   // exists. If it doesn't, kill the trusted process. | 
|  207   static void dieIfParentDied(int parentMapsFd); |  218   static void dieIfParentDied(int parentMapsFd); | 
|  208  |  219  | 
|  209   static void sendSystemCallInternal(const SyscallRequestInfo& rpc, |  220   static void sendSystemCallInternal(const SyscallRequestInfo& rpc, | 
|  210                                      LockType type, |  221                                      LockType type, | 
|  211                                      void* arg1 = 0, void* arg2 = 0, |  222                                      void* arg1 = 0, void* arg2 = 0, | 
|  212                                      void* arg3 = 0, void* arg4 = 0, |  223                                      void* arg3 = 0, void* arg4 = 0, | 
|  213                                      void* arg5 = 0, void* arg6 = 0, |  224                                      void* arg5 = 0, void* arg6 = 0, | 
|  214                                      Args* newSecureMem = 0); |  225                                      Args* newSecureMem = 0); | 
|  215 }; |  226 }; | 
|  216  |  227  | 
|  217 } // namespace |  228 } // namespace | 
|  218  |  229  | 
|  219 #endif // SECURE_MEM_H__ |  230 #endif // SECURE_MEM_H__ | 
| OLD | NEW |