Index: components/nacl/loader/nacl_listener.cc |
diff --git a/components/nacl/loader/nacl_listener.cc b/components/nacl/loader/nacl_listener.cc |
index 0733bf8af638e18b60f1aa33d4876dbee92acd54..7eab6036538413a59730637c21ff0fdeb9a36d0a 100644 |
--- a/components/nacl/loader/nacl_listener.cc |
+++ b/components/nacl/loader/nacl_listener.cc |
@@ -29,8 +29,8 @@ |
#include "ipc/ipc_sync_message_filter.h" |
#include "native_client/src/public/chrome_main.h" |
#include "native_client/src/public/nacl_app.h" |
+#include "native_client/src/public/nacl_desc.h" |
#include "native_client/src/public/nacl_file_info.h" |
-#include "native_client/src/trusted/service_runtime/include/sys/fcntl.h" |
#if defined(OS_POSIX) |
#include "base/file_descriptor_posix.h" |
@@ -41,7 +41,6 @@ |
#endif |
#if defined(OS_WIN) |
-#include <fcntl.h> |
#include <io.h> |
#include "content/public/common/sandbox_init.h" |
@@ -183,42 +182,6 @@ class BrowserValidationDBProxy : public NaClValidationDB { |
} |
} |
- // This is the "old" code path for resolving file tokens. It's only |
- // used for resolving the main nexe. |
- // TODO(teravest): Remove this. |
- bool ResolveFileToken(struct NaClFileToken* file_token, |
- int32* fd, |
- std::string* path) override { |
- *fd = -1; |
- *path = ""; |
- if (!NaClFileTokenIsValid(file_token)) { |
- return false; |
- } |
- IPC::PlatformFileForTransit ipc_fd = IPC::InvalidPlatformFileForTransit(); |
- base::FilePath ipc_path; |
- if (!listener_->Send(new NaClProcessMsg_ResolveFileToken(file_token->lo, |
- file_token->hi, |
- &ipc_fd, |
- &ipc_path))) { |
- return false; |
- } |
- if (ipc_fd == IPC::InvalidPlatformFileForTransit()) { |
- return false; |
- } |
- base::PlatformFile handle = |
- IPC::PlatformFileForTransitToPlatformFile(ipc_fd); |
-#if defined(OS_WIN) |
- // On Windows, valid handles are 32 bit unsigned integers so this is safe. |
- *fd = reinterpret_cast<int32>(handle); |
-#else |
- *fd = handle; |
-#endif |
- // It doesn't matter if the path is invalid UTF8 as long as it's consistent |
- // and unforgeable. |
- *path = ipc_path.AsUTF8Unsafe(); |
- return true; |
- } |
- |
private: |
// The listener never dies, otherwise this might be a dangling reference. |
NaClListener* listener_; |
@@ -266,14 +229,14 @@ class FileTokenMessageFilter : public IPC::MessageFilter { |
bool OnMessageReceived(const IPC::Message& msg) override { |
bool handled = true; |
IPC_BEGIN_MESSAGE_MAP(FileTokenMessageFilter, msg) |
- IPC_MESSAGE_HANDLER(NaClProcessMsg_ResolveFileTokenAsyncReply, |
- OnResolveFileTokenAsyncReply) |
+ IPC_MESSAGE_HANDLER(NaClProcessMsg_ResolveFileTokenReply, |
+ OnResolveFileTokenReply) |
IPC_MESSAGE_UNHANDLED(handled = false) |
IPC_END_MESSAGE_MAP() |
return handled; |
} |
- void OnResolveFileTokenAsyncReply( |
+ void OnResolveFileTokenReply( |
uint64_t token_lo, |
uint64_t token_hi, |
IPC::PlatformFileForTransit ipc_fd, |
@@ -454,21 +417,11 @@ void NaClListener::OnStart(const nacl::NaClStartParams& params) { |
args->prereserved_sandbox_size = prereserved_sandbox_size_; |
#endif |
- NaClFileInfo nexe_file_info; |
base::PlatformFile nexe_file = IPC::PlatformFileForTransitToPlatformFile( |
params.nexe_file); |
-#if defined(OS_WIN) |
- nexe_file_info.desc = |
- _open_osfhandle(reinterpret_cast<intptr_t>(nexe_file), |
- _O_RDONLY | _O_BINARY); |
-#elif defined(OS_POSIX) |
- nexe_file_info.desc = nexe_file; |
-#else |
-#error Unsupported target platform. |
-#endif |
- nexe_file_info.file_token.lo = params.nexe_token_lo; |
- nexe_file_info.file_token.hi = params.nexe_token_hi; |
- args->nexe_desc = NaClDescIoFromFileInfo(nexe_file_info, NACL_ABI_O_RDONLY); |
+ std::string file_path_str = params.nexe_file_path_metadata.AsUTF8Unsafe(); |
+ args->nexe_desc = NaClDescCreateWithFilePathMetadata(nexe_file, |
+ file_path_str.c_str()); |
int exit_status; |
if (!NaClChromeMainStart(nap, args, &exit_status)) |
@@ -483,7 +436,7 @@ void NaClListener::ResolveFileToken( |
uint64_t token_lo, |
uint64_t token_hi, |
base::Callback<void(IPC::PlatformFileForTransit, base::FilePath)> cb) { |
- if (!Send(new NaClProcessMsg_ResolveFileTokenAsync(token_lo, token_hi))) { |
+ if (!Send(new NaClProcessMsg_ResolveFileToken(token_lo, token_hi))) { |
cb.Run(IPC::PlatformFileForTransit(), base::FilePath()); |
return; |
} |