OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #include "components/nacl/browser/nacl_process_host.h" | 5 #include "components/nacl/browser/nacl_process_host.h" |
6 | 6 |
7 #include <string.h> | 7 #include <string.h> |
8 #include <algorithm> | 8 #include <algorithm> |
9 #include <string> | 9 #include <string> |
10 #include <utility> | 10 #include <utility> |
(...skipping 976 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
987 void NaClProcessHost::StartNaClFileResolved( | 987 void NaClProcessHost::StartNaClFileResolved( |
988 NaClStartParams params, | 988 NaClStartParams params, |
989 const base::FilePath& file_path, | 989 const base::FilePath& file_path, |
990 base::File checked_nexe_file) { | 990 base::File checked_nexe_file) { |
991 if (checked_nexe_file.IsValid()) { | 991 if (checked_nexe_file.IsValid()) { |
992 // Release the file received from the renderer. This has to be done on a | 992 // Release the file received from the renderer. This has to be done on a |
993 // thread where IO is permitted, though. | 993 // thread where IO is permitted, though. |
994 content::BrowserThread::GetBlockingPool()->PostTask( | 994 content::BrowserThread::GetBlockingPool()->PostTask( |
995 FROM_HERE, base::Bind(&CloseFile, base::Passed(std::move(nexe_file_)))); | 995 FROM_HERE, base::Bind(&CloseFile, base::Passed(std::move(nexe_file_)))); |
996 params.nexe_file_path_metadata = file_path; | 996 params.nexe_file_path_metadata = file_path; |
997 params.nexe_file = IPC::TakeFileHandleForProcess( | 997 params.nexe_file = |
998 std::move(checked_nexe_file), process_->GetData().handle); | 998 IPC::TakePlatformFileForTransit(std::move(checked_nexe_file)); |
999 } else { | 999 } else { |
1000 params.nexe_file = IPC::TakeFileHandleForProcess( | 1000 params.nexe_file = IPC::TakePlatformFileForTransit(std::move(nexe_file_)); |
1001 std::move(nexe_file_), process_->GetData().handle); | |
1002 } | 1001 } |
1003 | 1002 |
1004 #if defined(OS_LINUX) | 1003 #if defined(OS_LINUX) |
1005 // In Non-SFI mode, create socket pairs for IPC channels here, unlike in | 1004 // In Non-SFI mode, create socket pairs for IPC channels here, unlike in |
1006 // SFI-mode, in which those channels are created in nacl_listener.cc. | 1005 // SFI-mode, in which those channels are created in nacl_listener.cc. |
1007 // This is for security hardening. We can then prohibit the socketpair() | 1006 // This is for security hardening. We can then prohibit the socketpair() |
1008 // system call in nacl_helper and nacl_helper_nonsfi. | 1007 // system call in nacl_helper and nacl_helper_nonsfi. |
1009 if (uses_nonsfi_mode_) { | 1008 if (uses_nonsfi_mode_) { |
1010 // Note: here, because some FDs/handles for the NaCl loader process are | 1009 // Note: here, because some FDs/handles for the NaCl loader process are |
1011 // already opened, they are transferred to NaCl loader process even if | 1010 // already opened, they are transferred to NaCl loader process even if |
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1254 | 1253 |
1255 void NaClProcessHost::FileResolved( | 1254 void NaClProcessHost::FileResolved( |
1256 uint64_t file_token_lo, | 1255 uint64_t file_token_lo, |
1257 uint64_t file_token_hi, | 1256 uint64_t file_token_hi, |
1258 const base::FilePath& file_path, | 1257 const base::FilePath& file_path, |
1259 base::File file) { | 1258 base::File file) { |
1260 base::FilePath out_file_path; | 1259 base::FilePath out_file_path; |
1261 IPC::PlatformFileForTransit out_handle; | 1260 IPC::PlatformFileForTransit out_handle; |
1262 if (file.IsValid()) { | 1261 if (file.IsValid()) { |
1263 out_file_path = file_path; | 1262 out_file_path = file_path; |
1264 out_handle = IPC::TakeFileHandleForProcess(std::move(file), | 1263 out_handle = IPC::TakePlatformFileForTransit(std::move(file)); |
1265 process_->GetData().handle); | |
1266 } else { | 1264 } else { |
1267 out_handle = IPC::InvalidPlatformFileForTransit(); | 1265 out_handle = IPC::InvalidPlatformFileForTransit(); |
1268 } | 1266 } |
1269 Send(new NaClProcessMsg_ResolveFileTokenReply( | 1267 Send(new NaClProcessMsg_ResolveFileTokenReply( |
1270 file_token_lo, | 1268 file_token_lo, |
1271 file_token_hi, | 1269 file_token_hi, |
1272 out_handle, | 1270 out_handle, |
1273 out_file_path)); | 1271 out_file_path)); |
1274 } | 1272 } |
1275 | 1273 |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1337 NaClStartDebugExceptionHandlerThread( | 1335 NaClStartDebugExceptionHandlerThread( |
1338 std::move(process), info, base::ThreadTaskRunnerHandle::Get(), | 1336 std::move(process), info, base::ThreadTaskRunnerHandle::Get(), |
1339 base::Bind(&NaClProcessHost::OnDebugExceptionHandlerLaunchedByBroker, | 1337 base::Bind(&NaClProcessHost::OnDebugExceptionHandlerLaunchedByBroker, |
1340 weak_factory_.GetWeakPtr())); | 1338 weak_factory_.GetWeakPtr())); |
1341 return true; | 1339 return true; |
1342 } | 1340 } |
1343 } | 1341 } |
1344 #endif | 1342 #endif |
1345 | 1343 |
1346 } // namespace nacl | 1344 } // namespace nacl |
OLD | NEW |