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

Side by Side Diff: src/trusted/reverse_service/reverse_service_c.c

Issue 15039022: Enable meta-based validation for shared libraries. (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client
Patch Set: Style 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The Native Client Authors. All rights reserved. 2 * Copyright (c) 2012 The Native Client Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be 3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file. 4 * found in the LICENSE file.
5 */ 5 */
6 6
7 #include "native_client/src/trusted/reverse_service/reverse_service_c.h" 7 #include "native_client/src/trusted/reverse_service/reverse_service_c.h"
8 8
9 #include <limits.h> 9 #include <limits.h>
10 #include <string.h> 10 #include <string.h>
11 11
12 #include "native_client/src/include/nacl_compiler_annotations.h" 12 #include "native_client/src/include/nacl_compiler_annotations.h"
13 #include "native_client/src/include/portability_io.h" 13 #include "native_client/src/include/portability_io.h"
14 14
15 #include "native_client/src/shared/platform/nacl_check.h" 15 #include "native_client/src/shared/platform/nacl_check.h"
16 #include "native_client/src/shared/platform/nacl_host_desc.h" 16 #include "native_client/src/shared/platform/nacl_host_desc.h"
17 #include "native_client/src/shared/platform/nacl_log.h" 17 #include "native_client/src/shared/platform/nacl_log.h"
18 #include "native_client/src/shared/platform/nacl_sync.h" 18 #include "native_client/src/shared/platform/nacl_sync.h"
19 #include "native_client/src/shared/platform/nacl_sync_checked.h" 19 #include "native_client/src/shared/platform/nacl_sync_checked.h"
20 #include "native_client/src/shared/platform/nacl_threads.h" 20 #include "native_client/src/shared/platform/nacl_threads.h"
21 21
22 #include "native_client/src/shared/srpc/nacl_srpc.h" 22 #include "native_client/src/shared/srpc/nacl_srpc.h"
23 23
24 #include "native_client/src/trusted/desc/nacl_desc_invalid.h" 24 #include "native_client/src/trusted/desc/nacl_desc_invalid.h"
25 #include "native_client/src/trusted/desc/nacl_desc_io.h" 25 #include "native_client/src/trusted/desc/nacl_desc_io.h"
26 26
27 #include "native_client/src/trusted/reverse_service/manifest_rpc.h" 27 #include "native_client/src/trusted/reverse_service/manifest_rpc.h"
28 #include "native_client/src/trusted/reverse_service/nacl_file_info.h"
28 #include "native_client/src/trusted/reverse_service/reverse_control_rpc.h" 29 #include "native_client/src/trusted/reverse_service/reverse_control_rpc.h"
29 30
30 #include "native_client/src/trusted/service_runtime/include/sys/errno.h" 31 #include "native_client/src/trusted/service_runtime/include/sys/errno.h"
31 #include "native_client/src/trusted/service_runtime/include/sys/fcntl.h" 32 #include "native_client/src/trusted/service_runtime/include/sys/fcntl.h"
32 33
33 struct NaClSrpcHandlerDesc const kNaClReverseServiceHandlers[]; /* fwd */ 34 struct NaClSrpcHandlerDesc const kNaClReverseServiceHandlers[]; /* fwd */
34 35
35 int NaClReverseThreadIfFactoryFn( 36 int NaClReverseThreadIfFactoryFn(
36 void *factory_data, 37 void *factory_data,
37 NaClThreadIfStartFunction fn_ptr, 38 NaClThreadIfStartFunction fn_ptr,
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 */ 349 */
349 static void NaClReverseServiceManifestLookupRpc( 350 static void NaClReverseServiceManifestLookupRpc(
350 struct NaClSrpcRpc *rpc, 351 struct NaClSrpcRpc *rpc,
351 struct NaClSrpcArg **in_args, 352 struct NaClSrpcArg **in_args,
352 struct NaClSrpcArg **out_args, 353 struct NaClSrpcArg **out_args,
353 struct NaClSrpcClosure *done_cls) { 354 struct NaClSrpcClosure *done_cls) {
354 struct NaClReverseService *nrsp = 355 struct NaClReverseService *nrsp =
355 (struct NaClReverseService *) rpc->channel->server_instance_data; 356 (struct NaClReverseService *) rpc->channel->server_instance_data;
356 char *url_key = in_args[0]->arrays.str; 357 char *url_key = in_args[0]->arrays.str;
357 int flags = in_args[0]->u.ival; 358 int flags = in_args[0]->u.ival;
358 int32_t desc = -1; 359 struct NaClFileInfo info;
359 struct NaClHostDesc *host_desc; 360 struct NaClHostDesc *host_desc;
360 struct NaClDescIoDesc *io_desc = NULL; 361 struct NaClDescIoDesc *io_desc = NULL;
362 struct NaClDesc *nacl_desc = NULL;
363
364 memset(&info, 0, sizeof(info));
361 365
362 NaClLog(4, "Entered ManifestLookupRpc: 0x%08"NACL_PRIxPTR", %s, %d\n", 366 NaClLog(4, "Entered ManifestLookupRpc: 0x%08"NACL_PRIxPTR", %s, %d\n",
363 (uintptr_t) nrsp, url_key, flags); 367 (uintptr_t) nrsp, url_key, flags);
364 368
365 NaClLog(4, "ManifestLookupRpc: invoking OpenManifestEntry\n"); 369 NaClLog(4, "ManifestLookupRpc: invoking OpenManifestEntry\n");
366 if (!(*NACL_VTBL(NaClReverseInterface, nrsp->iface)-> 370 if (!(*NACL_VTBL(NaClReverseInterface, nrsp->iface)->
367 OpenManifestEntry)(nrsp->iface, url_key, &desc) 371 OpenManifestEntry)(nrsp->iface, url_key, &info)
368 || -1 == desc) { 372 || -1 == info.desc) {
369 NaClLog(1, "ManifestLookupRpc: OpenManifestEntry failed.\n"); 373 NaClLog(1, "ManifestLookupRpc: OpenManifestEntry failed.\n");
370 out_args[0]->u.ival = NACL_ABI_ENOENT; /* failed */ 374 out_args[0]->u.ival = NACL_ABI_ENOENT; /* failed */
371 out_args[1]->u.hval = (struct NaClDesc *) NaClDescInvalidMake(); 375 out_args[1]->u.hval = (struct NaClDesc *) NaClDescInvalidMake();
372 out_args[2]->u.count = 0; 376 out_args[2]->u.lval = 0;
377 out_args[3]->u.count = 0;
373 goto done; 378 goto done;
374 } 379 }
375 NaClLog(4, "ManifestLookupRpc: OpenManifestEntry returned desc %d.\n", 380 NaClLog(4, "ManifestLookupRpc: OpenManifestEntry returned desc %d.\n",
376 desc); 381 info.desc);
377 host_desc = (struct NaClHostDesc *) malloc(sizeof *host_desc); 382 host_desc = (struct NaClHostDesc *) malloc(sizeof *host_desc);
378 CHECK(host_desc != NULL); 383 CHECK(host_desc != NULL);
379 CHECK(NaClHostDescPosixTake(host_desc, desc, NACL_ABI_O_RDONLY) == 0); 384 CHECK(NaClHostDescPosixTake(host_desc, info.desc, NACL_ABI_O_RDONLY) == 0);
380 io_desc = NaClDescIoDescMake(host_desc); 385 io_desc = NaClDescIoDescMake(host_desc);
381 CHECK(io_desc != NULL); 386 CHECK(io_desc != NULL);
387 nacl_desc = (struct NaClDesc *) io_desc;
388
382 out_args[0]->u.ival = 0; /* OK */ 389 out_args[0]->u.ival = 0; /* OK */
383 out_args[1]->u.hval = (struct NaClDesc *) io_desc; 390 out_args[1]->u.hval = nacl_desc;
384 out_args[2]->u.count = 10; 391 out_args[2]->u.lval = (int64_t) info.nonce;
385 strncpy(out_args[2]->arrays.carr, "123456789", 10); 392 out_args[3]->u.count = 10;
393 strncpy(out_args[3]->arrays.carr, "123456789", 10);
386 /* 394 /*
387 * TODO(phosek): the array should be an object reference (issue 3035). 395 * TODO(phosek): the array should be an object reference (issue 3035).
388 */ 396 */
389 397
390 done: 398 done:
391 rpc->result = NACL_SRPC_RESULT_OK; 399 rpc->result = NACL_SRPC_RESULT_OK;
392 (*done_cls->Run)(done_cls); 400 (*done_cls->Run)(done_cls);
393 NaClDescSafeUnref((struct NaClDesc *) io_desc); 401 NaClDescSafeUnref((struct NaClDesc *) io_desc);
394 } 402 }
395 403
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after
726 NaClLog(3, 734 NaClLog(3,
727 ("NaClReverseInterfaceEnumerateManifestKeys(0x%08"NACL_PRIxPTR 735 ("NaClReverseInterfaceEnumerateManifestKeys(0x%08"NACL_PRIxPTR
728 ", 0x%08"NACL_PRIxPTR", %08"NACL_PRIdS")\n"), 736 ", 0x%08"NACL_PRIxPTR", %08"NACL_PRIdS")\n"),
729 (uintptr_t) self, (uintptr_t) buffer, buffer_bytes); 737 (uintptr_t) self, (uintptr_t) buffer, buffer_bytes);
730 return 0; 738 return 0;
731 } 739 }
732 740
733 int NaClReverseInterfaceOpenManifestEntry( 741 int NaClReverseInterfaceOpenManifestEntry(
734 struct NaClReverseInterface *self, 742 struct NaClReverseInterface *self,
735 char const *url_key, 743 char const *url_key,
736 int32_t *out_desc) { 744 struct NaClFileInfo *info) {
737 NaClLog(3, 745 NaClLog(3,
738 ("NaClReverseInterfaceOpenManifestEntry(0x%08"NACL_PRIxPTR", %s" 746 ("NaClReverseInterfaceOpenManifestEntry(0x%08"NACL_PRIxPTR", %s"
739 ", 0x%08"NACL_PRIxPTR")\n"), 747 ", 0x%08"NACL_PRIxPTR")\n"),
740 (uintptr_t) self, url_key, (uintptr_t) out_desc); 748 (uintptr_t) self, url_key, (uintptr_t) info);
741 return 0; 749 return 0;
742 } 750 }
743 751
744 int NaClReverseInterfaceCloseManifestEntry( 752 int NaClReverseInterfaceCloseManifestEntry(
745 struct NaClReverseInterface *self, 753 struct NaClReverseInterface *self,
746 int32_t desc) { 754 int32_t desc) {
747 NaClLog(3, 755 NaClLog(3,
748 "NaClReverseInterfaceCloseManifestEntry(0x%08"NACL_PRIxPTR", %d)\n", 756 "NaClReverseInterfaceCloseManifestEntry(0x%08"NACL_PRIxPTR", %d)\n",
749 (uintptr_t) self, desc); 757 (uintptr_t) self, desc);
750 return 0; 758 return 0;
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
832 NaClReverseInterfaceOpenManifestEntry, 840 NaClReverseInterfaceOpenManifestEntry,
833 NaClReverseInterfaceCloseManifestEntry, 841 NaClReverseInterfaceCloseManifestEntry,
834 NaClReverseInterfaceReportCrash, 842 NaClReverseInterfaceReportCrash,
835 NaClReverseInterfaceReportExitStatus, 843 NaClReverseInterfaceReportExitStatus,
836 NaClReverseInterfaceDoPostMessage, 844 NaClReverseInterfaceDoPostMessage,
837 NaClReverseInterfaceCreateProcess, 845 NaClReverseInterfaceCreateProcess,
838 NaClReverseInterfaceCreateProcessFunctorResult, 846 NaClReverseInterfaceCreateProcessFunctorResult,
839 NaClReverseInterfaceFinalizeProcess, 847 NaClReverseInterfaceFinalizeProcess,
840 NaClReverseInterfaceRequestQuotaForWrite, 848 NaClReverseInterfaceRequestQuotaForWrite,
841 }; 849 };
OLDNEW
« no previous file with comments | « src/trusted/reverse_service/reverse_service_c.h ('k') | src/trusted/sel_universal/reverse_emulate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698