Move abort into ExecuteProcess and mark it noreturn

PiperOrigin-RevId: 518528953
Change-Id: Ieaa03af484188bb35f9734d69d987eabbdcc23ab
This commit is contained in:
Wiktor Garbacz 2023-03-22 04:06:25 -07:00 committed by Copybara-Service
parent b62d103426
commit 99931c2ad6
4 changed files with 28 additions and 28 deletions

View File

@ -602,13 +602,13 @@ cc_library(
"//sandboxed_api/util:fileops", "//sandboxed_api/util:fileops",
"//sandboxed_api/util:raw_logging", "//sandboxed_api/util:raw_logging",
"//sandboxed_api/util:strerror", "//sandboxed_api/util:strerror",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/container:flat_hash_map", "@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/container:flat_hash_set", "@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/log", "@com_google_absl//absl/log",
"@com_google_absl//absl/status", "@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor", "@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings", "@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
"@org_kernel_libcap//:libcap", "@org_kernel_libcap//:libcap",
], ],
) )

View File

@ -543,29 +543,30 @@ add_library(sandbox2_forkserver ${SAPI_LIB_TYPE}
forkserver.h forkserver.h
) )
add_library(sandbox2::forkserver ALIAS sandbox2_forkserver) add_library(sandbox2::forkserver ALIAS sandbox2_forkserver)
target_link_libraries(sandbox2_forkserver PRIVATE target_link_libraries(sandbox2_forkserver
absl::flat_hash_map PRIVATE absl::flat_hash_map
absl::flat_hash_set absl::flat_hash_set
absl::status absl::status
absl::statusor absl::statusor
absl::str_format absl::strings
absl::strings libcap::libcap
libcap::libcap sandbox2::bpf_helper
sandbox2::bpf_helper sandbox2::client
sandbox2::client sandbox2::comms
sandbox2::comms sapi::fileops
sapi::fileops sandbox2::fork_client
sandbox2::fork_client sandbox2::forkserver_proto
sandbox2::forkserver_proto sandbox2::namespace
sandbox2::namespace sandbox2::policy
sandbox2::policy sapi::strerror
sapi::strerror sandbox2::sanitizer
sandbox2::sanitizer sandbox2::syscall
sandbox2::syscall sandbox2::unwind
sandbox2::unwind sandbox2::util
sandbox2::util sapi::base
sapi::base sapi::raw_logging
sapi::raw_logging PUBLIC absl::core_headers
absl::log
) )
# sandboxed_api/sandbox2:fork_client # sandboxed_api/sandbox2:fork_client

View File

@ -43,7 +43,6 @@
#include "absl/status/statusor.h" #include "absl/status/statusor.h"
#include "absl/strings/match.h" #include "absl/strings/match.h"
#include "absl/strings/str_cat.h" #include "absl/strings/str_cat.h"
#include "absl/strings/str_format.h"
#include "absl/strings/str_join.h" #include "absl/strings/str_join.h"
#include "absl/strings/str_split.h" #include "absl/strings/str_split.h"
#include "libcap/include/sys/capability.h" #include "libcap/include/sys/capability.h"
@ -378,13 +377,11 @@ void ForkServer::LaunchChild(const ForkRequest& request, int execve_fd,
} else { } else {
ExecuteProcess(execve_fd, argv.data(), envp.data()); ExecuteProcess(execve_fd, argv.data(), envp.data());
} }
abort();
} }
if (will_execve) { if (will_execve) {
ExecuteProcess(execve_fd, util::CharPtrArray::FromStringVector(args).data(), ExecuteProcess(execve_fd, util::CharPtrArray::FromStringVector(args).data(),
util::CharPtrArray::FromStringVector(envs).data()); util::CharPtrArray::FromStringVector(envs).data());
abort();
} }
} }
@ -643,6 +640,7 @@ void ForkServer::ExecuteProcess(int execve_fd, const char* const* argv,
} }
util::Syscall(__NR_exit_group, EXIT_FAILURE); util::Syscall(__NR_exit_group, EXIT_FAILURE);
abort();
} }
void ForkServer::InitializeNamespaces(const ForkRequest& request, uid_t uid, void ForkServer::InitializeNamespaces(const ForkRequest& request, uid_t uid,

View File

@ -23,6 +23,7 @@
#include <string> #include <string>
#include <vector> #include <vector>
#include "absl/base/attributes.h"
#include "absl/log/log.h" #include "absl/log/log.h"
namespace sandbox2 { namespace sandbox2 {
@ -73,7 +74,7 @@ class ForkServer {
// Executes the sandboxee, or exit with Executor::kFailedExecve. // Executes the sandboxee, or exit with Executor::kFailedExecve.
static void ExecuteProcess(int execve_fd, const char* const* argv, static void ExecuteProcess(int execve_fd, const char* const* argv,
const char* const* envp); const char* const* envp) ABSL_ATTRIBUTE_NORETURN;
// Runs namespace initializers for a sandboxee. // Runs namespace initializers for a sandboxee.
static void InitializeNamespaces(const ForkRequest& request, uid_t uid, static void InitializeNamespaces(const ForkRequest& request, uid_t uid,