| Index: sandbox/src/handle_interception.cc | 
| =================================================================== | 
| --- sandbox/src/handle_interception.cc	(revision 0) | 
| +++ sandbox/src/handle_interception.cc	(revision 0) | 
| @@ -0,0 +1,45 @@ | 
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
| +// Use of this source code is governed by a BSD-style license that can be | 
| +// found in the LICENSE file. | 
| + | 
| +#include "sandbox/src/handle_interception.h" | 
| + | 
| +#include "sandbox/src/crosscall_client.h" | 
| +#include "sandbox/src/ipc_tags.h" | 
| +#include "sandbox/src/sandbox_factory.h" | 
| +#include "sandbox/src/sandbox_nt_util.h" | 
| +#include "sandbox/src/sharedmem_ipc_client.h" | 
| +#include "sandbox/src/target_services.h" | 
| + | 
| +namespace sandbox { | 
| + | 
| +ResultCode DuplicateHandleProxy(HANDLE source_handle, | 
| +                                DWORD target_process_id, | 
| +                                HANDLE* target_handle, | 
| +                                DWORD desired_access, | 
| +                                DWORD options) { | 
| +  *target_handle = NULL; | 
| + | 
| +  void* memory = GetGlobalIPCMemory(); | 
| +  if (NULL == memory) | 
| +    return SBOX_ERROR_NO_SPACE; | 
| + | 
| +  SharedMemIPCClient ipc(memory); | 
| +  CrossCallReturn answer = {0}; | 
| +  ResultCode code = CrossCall(ipc, IPC_DUPLICATEHANDLEPROXY_TAG, | 
| +                              source_handle, target_process_id, | 
| +                              desired_access, options, &answer); | 
| +  if (SBOX_ALL_OK != code) | 
| +    return code; | 
| + | 
| +  if (answer.win32_result) { | 
| +    ::SetLastError(answer.nt_status); | 
| +    return SBOX_ERROR_GENERIC; | 
| +  } | 
| + | 
| +  *target_handle = answer.handle; | 
| +  return SBOX_ALL_OK; | 
| +} | 
| + | 
| +}  // namespace sandbox | 
| + | 
|  | 
| Property changes on: sandbox\src\handle_interception.cc | 
| ___________________________________________________________________ | 
| Added: svn:eol-style | 
| + LF | 
|  | 
|  |