Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(487)

Unified Diff: ppapi/native_client/src/trusted/plugin/service_runtime.cc

Issue 14750007: NaCl: enable meta-based validation for shared libraries. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ppapi/native_client/src/trusted/plugin/service_runtime.cc
diff --git a/ppapi/native_client/src/trusted/plugin/service_runtime.cc b/ppapi/native_client/src/trusted/plugin/service_runtime.cc
index ba21a4952873dc232a9222e1836daefc9ba34f93..569b5fadf59d541981ae4d18d319f2538f9cee1c 100644
--- a/ppapi/native_client/src/trusted/plugin/service_runtime.cc
+++ b/ppapi/native_client/src/trusted/plugin/service_runtime.cc
@@ -46,11 +46,10 @@
#include "native_client/src/trusted/plugin/pnacl_resources.h"
#include "native_client/src/trusted/plugin/sel_ldr_launcher_chrome.h"
#include "native_client/src/trusted/plugin/srpc_client.h"
-
-#include "native_client/src/trusted/weak_ref/call_on_main_thread.h"
-
+#include "native_client/src/trusted/reverse_service/nacl_file_info.h"
#include "native_client/src/trusted/service_runtime/nacl_error_code.h"
#include "native_client/src/trusted/service_runtime/include/sys/nacl_imc_api.h"
+#include "native_client/src/trusted/weak_ref/call_on_main_thread.h"
#include "ppapi/c/pp_errors.h"
#include "ppapi/c/trusted/ppb_file_io_trusted.h"
@@ -172,11 +171,11 @@ bool PluginReverseInterface::EnumerateManifestKeys(
// and invoke StreamAsFile with a completion callback that invokes
// GetPOSIXFileDesc.
bool PluginReverseInterface::OpenManifestEntry(nacl::string url_key,
- int32_t* out_desc) {
+ struct NaClFileInfo *info) {
ErrorInfo error_info;
bool op_complete = false; // NB: mu_ and cv_ also controls access to this!
OpenManifestEntryResource* to_open =
- new OpenManifestEntryResource(url_key, out_desc,
+ new OpenManifestEntryResource(url_key, info,
&error_info, &op_complete);
dmichael (off chromium) 2013/05/15 18:37:53 I know this isn't your fault, but this seems to wa
dmichael (off chromium) 2013/05/16 17:08:35 Could you comment this a little, pretty please? Th
Nick Bray (chromium) 2013/05/16 17:44:15 Done.
CHECK(to_open != NULL);
NaClLog(4, "PluginReverseInterface::OpenManifestEntry: %s\n",
@@ -228,8 +227,8 @@ bool PluginReverseInterface::OpenManifestEntry(nacl::string url_key,
NaClLog(4,
"PluginReverseInterface::OpenManifestEntry:"
" *out_desc = %d\n",
- *out_desc);
- if (*out_desc == -1) {
+ info->desc);
+ if (info->desc == -1) {
// TODO(bsy,ncbray): what else should we do with the error? This
// is a runtime error that may simply be a programming error in
// the untrusted code, or it may be something else wrong w/ the
@@ -267,7 +266,7 @@ void PluginReverseInterface::OpenManifestEntry_MainThreadContinuation(
// up requesting thread -- we are done.
nacl::MutexLocker take(&mu_);
*p->op_complete_ptr = true; // done...
- *p->out_desc = -1; // but failed.
+ p->file_info->desc = -1; // but failed.
NaClXCondVarBroadcast(&cv_);
return;
}
@@ -294,7 +293,7 @@ void PluginReverseInterface::OpenManifestEntry_MainThreadContinuation(
"StreamAsFile failed\n");
nacl::MutexLocker take(&mu_);
*p->op_complete_ptr = true; // done...
- *p->out_desc = -1; // but failed.
+ p->file_info->desc = -1; // but failed.
p->error_info->SetReport(ERROR_MANIFEST_OPEN,
"ServiceRuntime: StreamAsFile failed");
NaClXCondVarBroadcast(&cv_);
@@ -321,7 +320,8 @@ void PluginReverseInterface::OpenManifestEntry_MainThreadContinuation(
}
nacl::MutexLocker take(&mu_);
*p->op_complete_ptr = true; // done!
- *p->out_desc = fd;
+ // TODO(ncbray): more info for faster validation?
+ p->file_info->desc = fd;
NaClXCondVarBroadcast(&cv_);
NaClLog(4,
"OpenManifestEntry_MainThreadContinuation: GetPnaclFd okay\n");
@@ -347,7 +347,7 @@ void PluginReverseInterface::OpenManifestEntry_MainThreadContinuation(
} else {
nacl::MutexLocker take(&mu_);
*p->op_complete_ptr = true; // done...
- *p->out_desc = -1; // but failed.
+ p->file_info->desc = -1; // but failed.
p->error_info->SetReport(ERROR_PNACL_NOT_ENABLED,
"ServiceRuntime: GetPnaclFd failed -- pnacl not "
"enabled with --enable-pnacl.");
@@ -366,16 +366,17 @@ void PluginReverseInterface::StreamAsFile_MainThreadContinuation(
nacl::MutexLocker take(&mu_);
if (result == PP_OK) {
- NaClLog(4, "StreamAsFile_MainThreadContinuation: GetPOSIXFileDesc(%s)\n",
+ NaClLog(4, "StreamAsFile_MainThreadContinuation: GetFileInfo(%s)\n",
p->url.c_str());
- *p->out_desc = plugin_->GetPOSIXFileDesc(p->url);
+ *p->file_info = plugin_->GetFileInfo(p->url);
+
NaClLog(4,
"StreamAsFile_MainThreadContinuation: PP_OK, desc %d\n",
- *p->out_desc);
+ p->file_info->desc);
} else {
NaClLog(4,
"StreamAsFile_MainThreadContinuation: !PP_OK, setting desc -1\n");
- *p->out_desc = -1;
+ p->file_info->desc = -1;
p->error_info->SetReport(ERROR_MANIFEST_OPEN,
"Plugin StreamAsFile failed at callback");
}
@@ -397,16 +398,16 @@ void PluginReverseInterface::BitcodeTranslate_MainThreadContinuation(
// accepts NaClDescs we can avoid this downcast.
NaClDesc* desc = pnacl_coordinator_->ReleaseTranslatedFD()->desc();
struct NaClDescIoDesc* ndiodp = (struct NaClDescIoDesc*)desc;
- *p->out_desc = ndiodp->hd->d;
+ p->file_info->desc = ndiodp->hd->d;
pnacl_coordinator_.reset(NULL);
NaClLog(4,
"BitcodeTranslate_MainThreadContinuation: PP_OK, desc %d\n",
- *p->out_desc);
+ p->file_info->desc);
} else {
NaClLog(4,
"BitcodeTranslate_MainThreadContinuation: !PP_OK, "
"setting desc -1\n");
- *p->out_desc = -1;
+ p->file_info->desc = -1;
// Error should have been reported by pnacl coordinator.
NaClLog(LOG_ERROR, "PluginReverseInterface::BitcodeTranslate error.\n");
}

Powered by Google App Engine
This is Rietveld 408576698