Chromium Code Reviews| Index: components/nacl/loader/nacl_listener.cc |
| diff --git a/components/nacl/loader/nacl_listener.cc b/components/nacl/loader/nacl_listener.cc |
| index 4cf4a3ed2e8435964d729a4c5ca75e6464c4949e..78c50f2b5aefe2d83c579de77f5daf6b55ab7737 100644 |
| --- a/components/nacl/loader/nacl_listener.cc |
| +++ b/components/nacl/loader/nacl_listener.cc |
| @@ -295,8 +295,9 @@ void NaClListener::OnStart(const nacl::NaClStartParams& params) { |
| struct NaClApp* nap = NULL; |
| NaClChromeMainInit(); |
| - crash_info_shmem_.reset(new base::SharedMemory(params.crash_info_shmem_handle, |
| - false)); |
| + CHECK(base::SharedMemory::IsHandleValid(params.crash_info_shmem_handle)); |
| + crash_info_shmem_.reset(new base::SharedMemory( |
| + params.crash_info_shmem_handle, false /* not readonly */)); |
| CHECK(crash_info_shmem_->Map(nacl::kNaClCrashInfoShmemSize)); |
| NaClSetFatalErrorCallback(&FatalLogHandler); |
| @@ -343,7 +344,6 @@ void NaClListener::OnStart(const nacl::NaClStartParams& params) { |
| manifest_service_handle))) |
| LOG(ERROR) << "Failed to send IPC channel handle to NaClProcessHost."; |
| - std::vector<nacl::FileDescriptor> handles = params.handles; |
| struct NaClChromeMainArgs* args = NaClChromeMainArgsCreate(); |
| if (args == NULL) { |
| LOG(ERROR) << "NaClChromeMainArgsCreate() failed"; |
| @@ -354,16 +354,17 @@ void NaClListener::OnStart(const nacl::NaClStartParams& params) { |
| args->number_of_cores = number_of_cores_; |
| args->create_memory_object_func = CreateMemoryObject; |
| # if defined(OS_MACOSX) |
|
Mark Seaborn
2015/04/24 00:53:25
You could move this outside "#if defined(OS_LINUX)
hidehiko
2015/04/24 10:05:18
Acknowledged.
|
| - CHECK(handles.size() >= 1); |
| - g_shm_fd = nacl::ToNativeHandle(handles[handles.size() - 1]); |
| - handles.pop_back(); |
| + CHECK(params.mac_shm_fd != IPC::InvalidPlatformFileForTransit()); |
| + g_shm_fd = IPC::PlatformFileForTransitToPlatformFile(params.mac_shm_fd); |
| +# else |
| + CHECK(params.mac_shm_fd == IPC::InvalidPlatformFileForTransit()); |
|
Mark Seaborn
2015/04/24 00:53:25
Note that you're doing this check on OS_LINUX but
hidehiko
2015/04/24 10:05:18
Now the field is guraded by OS_MACOSX #ifdef, so I
|
| # endif |
| #endif |
| DCHECK(params.process_type != nacl::kUnknownNaClProcessType); |
| - CHECK(handles.size() >= 1); |
| - NaClHandle irt_handle = nacl::ToNativeHandle(handles[handles.size() - 1]); |
| - handles.pop_back(); |
| + CHECK(params.irt_handle != IPC::InvalidPlatformFileForTransit()); |
| + NaClHandle irt_handle = |
| + IPC::PlatformFileForTransitToPlatformFile(params.irt_handle); |
| #if defined(OS_WIN) |
| args->irt_fd = _open_osfhandle(reinterpret_cast<intptr_t>(irt_handle), |
| @@ -385,8 +386,9 @@ void NaClListener::OnStart(const nacl::NaClStartParams& params) { |
| params.version); |
| } |
| - CHECK(handles.size() == 1); |
| - args->imc_bootstrap_handle = nacl::ToNativeHandle(handles[0]); |
| + CHECK(params.imc_bootstrap_handle != IPC::InvalidPlatformFileForTransit()); |
| + args->imc_bootstrap_handle = |
| + IPC::PlatformFileForTransitToPlatformFile(params.imc_bootstrap_handle); |
| args->enable_debug_stub = params.enable_debug_stub; |
| // Now configure parts that depend on process type. |
| @@ -416,9 +418,13 @@ void NaClListener::OnStart(const nacl::NaClStartParams& params) { |
| args->pnacl_mode = 0; |
| } |
| -#if defined(OS_LINUX) || defined(OS_MACOSX) |
| - args->debug_stub_server_bound_socket_fd = nacl::ToNativeHandle( |
| - params.debug_stub_server_bound_socket); |
| +#if defined(OS_POSIX) |
| + args->debug_stub_server_bound_socket_fd = |
| + IPC::PlatformFileForTransitToPlatformFile( |
| + params.debug_stub_server_bound_socket); |
| +#else |
| + CHECK(params.debug_stub_server_bound_socket == |
| + IPC::InvalidPlatformFileForTransit()); |
| #endif |
| #if defined(OS_WIN) |
| args->broker_duplicate_handle_func = BrokerDuplicateHandle; |