| Index: src/trusted/reverse_service/reverse_service_c.c
|
| diff --git a/src/trusted/reverse_service/reverse_service_c.c b/src/trusted/reverse_service/reverse_service_c.c
|
| index f3ef9944d998da798404a298c68d86ef30d28891..8b32a650ae7ea0084ef343952452d0a07202602e 100644
|
| --- a/src/trusted/reverse_service/reverse_service_c.c
|
| +++ b/src/trusted/reverse_service/reverse_service_c.c
|
| @@ -25,6 +25,7 @@
|
| #include "native_client/src/trusted/desc/nacl_desc_io.h"
|
|
|
| #include "native_client/src/trusted/reverse_service/manifest_rpc.h"
|
| +#include "native_client/src/trusted/reverse_service/nacl_file_info.h"
|
| #include "native_client/src/trusted/reverse_service/reverse_control_rpc.h"
|
|
|
| #include "native_client/src/trusted/service_runtime/include/sys/errno.h"
|
| @@ -355,34 +356,41 @@ static void NaClReverseServiceManifestLookupRpc(
|
| (struct NaClReverseService *) rpc->channel->server_instance_data;
|
| char *url_key = in_args[0]->arrays.str;
|
| int flags = in_args[0]->u.ival;
|
| - int32_t desc = -1;
|
| + struct NaClFileInfo info;
|
| struct NaClHostDesc *host_desc;
|
| struct NaClDescIoDesc *io_desc = NULL;
|
| + struct NaClDesc *nacl_desc = NULL;
|
| +
|
| + memset(&info, 0, sizeof(info));
|
|
|
| NaClLog(4, "Entered ManifestLookupRpc: 0x%08"NACL_PRIxPTR", %s, %d\n",
|
| (uintptr_t) nrsp, url_key, flags);
|
|
|
| NaClLog(4, "ManifestLookupRpc: invoking OpenManifestEntry\n");
|
| if (!(*NACL_VTBL(NaClReverseInterface, nrsp->iface)->
|
| - OpenManifestEntry)(nrsp->iface, url_key, &desc)
|
| - || -1 == desc) {
|
| + OpenManifestEntry)(nrsp->iface, url_key, &info)
|
| + || -1 == info.desc) {
|
| NaClLog(1, "ManifestLookupRpc: OpenManifestEntry failed.\n");
|
| out_args[0]->u.ival = NACL_ABI_ENOENT; /* failed */
|
| out_args[1]->u.hval = (struct NaClDesc *) NaClDescInvalidMake();
|
| - out_args[2]->u.count = 0;
|
| + out_args[2]->u.lval = 0;
|
| + out_args[3]->u.count = 0;
|
| goto done;
|
| }
|
| NaClLog(4, "ManifestLookupRpc: OpenManifestEntry returned desc %d.\n",
|
| - desc);
|
| + info.desc);
|
| host_desc = (struct NaClHostDesc *) malloc(sizeof *host_desc);
|
| CHECK(host_desc != NULL);
|
| - CHECK(NaClHostDescPosixTake(host_desc, desc, NACL_ABI_O_RDONLY) == 0);
|
| + CHECK(NaClHostDescPosixTake(host_desc, info.desc, NACL_ABI_O_RDONLY) == 0);
|
| io_desc = NaClDescIoDescMake(host_desc);
|
| CHECK(io_desc != NULL);
|
| + nacl_desc = (struct NaClDesc *) io_desc;
|
| +
|
| out_args[0]->u.ival = 0; /* OK */
|
| - out_args[1]->u.hval = (struct NaClDesc *) io_desc;
|
| - out_args[2]->u.count = 10;
|
| - strncpy(out_args[2]->arrays.carr, "123456789", 10);
|
| + out_args[1]->u.hval = nacl_desc;
|
| + out_args[2]->u.lval = (int64_t) info.nonce;
|
| + out_args[3]->u.count = 10;
|
| + strncpy(out_args[3]->arrays.carr, "123456789", 10);
|
| /*
|
| * TODO(phosek): the array should be an object reference (issue 3035).
|
| */
|
| @@ -733,11 +741,11 @@ size_t NaClReverseInterfaceEnumerateManifestKeys(
|
| int NaClReverseInterfaceOpenManifestEntry(
|
| struct NaClReverseInterface *self,
|
| char const *url_key,
|
| - int32_t *out_desc) {
|
| + struct NaClFileInfo *info) {
|
| NaClLog(3,
|
| ("NaClReverseInterfaceOpenManifestEntry(0x%08"NACL_PRIxPTR", %s"
|
| ", 0x%08"NACL_PRIxPTR")\n"),
|
| - (uintptr_t) self, url_key, (uintptr_t) out_desc);
|
| + (uintptr_t) self, url_key, (uintptr_t) info);
|
| return 0;
|
| }
|
|
|
|
|