diff --git a/zircon/system/ulib/fdio/BUILD.gn b/zircon/system/ulib/fdio/BUILD.gn index c86c805f0fde6b05f673fdeb66a4e69d7b1a7acc..3d65af8c13240a2847abf45739e9a0eed9351438 100644 --- a/zircon/system/ulib/fdio/BUILD.gn +++ b/zircon/system/ulib/fdio/BUILD.gn @@ -30,7 +30,7 @@ library("fdio") { "null.cpp", "remoteio.cpp", "socket.cpp", - "spawn.c", + "spawn.cpp", "stubs.cpp", "uname.c", "unistd.c", diff --git a/zircon/system/ulib/fdio/spawn.c b/zircon/system/ulib/fdio/spawn.cpp similarity index 96% rename from zircon/system/ulib/fdio/spawn.c rename to zircon/system/ulib/fdio/spawn.cpp index 11e968857d0d85cd46ec6ab68330c790eab402fb..c366e01265ed019226e0dff1a47ad821830b594a 100644 --- a/zircon/system/ulib/fdio/spawn.c +++ b/zircon/system/ulib/fdio/spawn.cpp @@ -194,7 +194,7 @@ static zx_status_t send_cstring_array(zx_handle_t launcher, int ordinal, const c offset += FIDL_ALIGN(size); } - return zx_channel_write(launcher, 0, msg, msg_len, NULL, 0); + return zx_channel_write(launcher, 0, msg, static_cast<uint32_t>(msg_len), NULL, 0); } static zx_status_t send_handles(zx_handle_t launcher, size_t handle_capacity, @@ -218,8 +218,9 @@ static zx_status_t send_handles(zx_handle_t launcher, size_t handle_capacity, req->hdr.ordinal = fuchsia_process_LauncherAddHandlesOrdinal; zx_status_t status = ZX_OK; - size_t h = 0; + uint32_t h = 0; size_t a = 0; + size_t msg_len = 0; if ((flags & FDIO_SPAWN_CLONE_JOB) != 0) { handle_infos[h].handle = FIDL_HANDLE_PRESENT; @@ -304,8 +305,8 @@ static zx_status_t send_handles(zx_handle_t launcher, size_t handle_capacity, ZX_DEBUG_ASSERT(h <= handle_capacity); - size_t msg_len = sizeof(fuchsia_process_LauncherAddHandlesRequest) + FIDL_ALIGN(h * sizeof(fuchsia_process_HandleInfo)); - status = zx_channel_write(launcher, 0, msg, msg_len, handles, h); + msg_len = sizeof(fuchsia_process_LauncherAddHandlesRequest) + FIDL_ALIGN(h * sizeof(fuchsia_process_HandleInfo)); + status = zx_channel_write(launcher, 0, msg, static_cast<uint32_t>(msg_len), handles, h); if (status != ZX_OK) report_error(err_msg, "failed send handles: %d", status); @@ -353,17 +354,17 @@ static zx_status_t send_namespace(zx_handle_t launcher, size_t name_count, size_ req->hdr.ordinal = fuchsia_process_LauncherAddNamesOrdinal; req->names.count = name_count; - req->names.data = (void*)FIDL_ALLOC_PRESENT; + req->names.data = reinterpret_cast<void*>(FIDL_ALLOC_PRESENT); size_t n = 0; - size_t h = 0; + uint32_t h = 0; size_t offset = 0; if (flat) { while (n < flat->count) { size_t size = strlen(flat->path[n]); names[n].path.size = size; - names[n].path.data = (void*)FIDL_ALLOC_PRESENT; + names[n].path.data = reinterpret_cast<char*>(FIDL_ALLOC_PRESENT); names[n].directory = FIDL_HANDLE_PRESENT; memcpy(payload + offset, flat->path[n], size); offset += FIDL_ALIGN(size); @@ -376,7 +377,7 @@ static zx_status_t send_namespace(zx_handle_t launcher, size_t name_count, size_ if (actions[i].action == FDIO_SPAWN_ACTION_ADD_NS_ENTRY) { size_t size = strlen(actions[i].ns.prefix); names[n].path.size = size; - names[n].path.data = (void*)FIDL_ALLOC_PRESENT; + names[n].path.data = reinterpret_cast<char*>(FIDL_ALLOC_PRESENT); names[n].directory = FIDL_HANDLE_PRESENT; memcpy(payload + offset, actions[i].ns.prefix, size); offset += FIDL_ALIGN(size); @@ -388,7 +389,7 @@ static zx_status_t send_namespace(zx_handle_t launcher, size_t name_count, size_ ZX_DEBUG_ASSERT(n == name_count); ZX_DEBUG_ASSERT(h == name_count); - zx_status_t status = zx_channel_write(launcher, 0, msg, msg_len, handles, h); + zx_status_t status = zx_channel_write(launcher, 0, msg, static_cast<uint32_t>(msg_len), handles, h); if (status != ZX_OK) report_error(err_msg, "failed send namespace: %d", status); @@ -456,6 +457,8 @@ zx_status_t fdio_spawn_vmo(zx_handle_t job, zx_handle_t launcher_request = ZX_HANDLE_INVALID; zx_handle_t msg_handles[FDIO_SPAWN_LAUNCH_HANDLE_COUNT]; zx_handle_t ldsvc = ZX_HANDLE_INVALID; + const char* process_name = NULL; + size_t process_name_size = 0; memset(msg_handles, 0, sizeof(msg_handles)); @@ -472,7 +475,7 @@ zx_status_t fdio_spawn_vmo(zx_handle_t job, if (job == ZX_HANDLE_INVALID) job = zx_job_default(); - const char* process_name = argv[0]; + process_name = argv[0]; for (size_t i = 0; i < action_count; ++i) { switch (actions[i].action) { @@ -552,7 +555,7 @@ zx_status_t fdio_spawn_vmo(zx_handle_t job, char* name = &head[FDIO_RESOLVE_PREFIX_LEN]; size_t len = fuchsia_process_MAX_RESOLVE_NAME_SIZE; - char* end = memchr(name, '\n', len); + char* end = reinterpret_cast<char*>(memchr(name, '\n', len)); if (end != NULL) { len = end - name; } @@ -629,7 +632,7 @@ zx_status_t fdio_spawn_vmo(zx_handle_t job, action_count = 0; // We've consumed all the actions at this point. - size_t process_name_size = strlen(process_name); + process_name_size = strlen(process_name); if (process_name_size >= ZX_MAX_NAME_LEN) process_name_size = ZX_MAX_NAME_LEN - 1; @@ -648,7 +651,7 @@ zx_status_t fdio_spawn_vmo(zx_handle_t job, msg.req.info.executable = FIDL_HANDLE_PRESENT; msg.req.info.job = FIDL_HANDLE_PRESENT; msg.req.info.name.size = process_name_size; - msg.req.info.name.data = (void*)FIDL_ALLOC_PRESENT; + msg.req.info.name.data = reinterpret_cast<char*>(FIDL_ALLOC_PRESENT); memcpy(msg.process_name, process_name, process_name_size); msg_handles[FDIO_SPAWN_LAUNCH_HANDLE_EXECUTABLE] = executable_vmo; @@ -671,7 +674,7 @@ zx_status_t fdio_spawn_vmo(zx_handle_t job, args.wr_handles = msg_handles; args.rd_bytes = &reply; args.rd_handles = &process; - args.wr_num_bytes = msg_len; + args.wr_num_bytes = static_cast<uint32_t>(msg_len); args.wr_num_handles = FDIO_SPAWN_LAUNCH_HANDLE_COUNT; args.rd_num_bytes = sizeof(reply); args.rd_num_handles = FDIO_SPAWN_LAUNCH_REPLY_HANDLE_COUNT;