[*] POSIX hardening: dont COW this futex
This commit is contained in:
parent
75f39b9858
commit
98e76f0832
@ -14,6 +14,11 @@ namespace Aurora::Process
|
|||||||
{
|
{
|
||||||
static AuThreadPrimitives::Mutex gEnvMutex;
|
static AuThreadPrimitives::Mutex gEnvMutex;
|
||||||
|
|
||||||
|
void PosixForkResetLocks()
|
||||||
|
{
|
||||||
|
AuResetMember(gEnvMutex);
|
||||||
|
}
|
||||||
|
|
||||||
AUKN_SYM AuList<AuPair<AuString, AuString>> EnvironmentGetAll()
|
AUKN_SYM AuList<AuPair<AuString, AuString>> EnvironmentGetAll()
|
||||||
{
|
{
|
||||||
AU_LOCK_GUARD(gEnvMutex);
|
AU_LOCK_GUARD(gEnvMutex);
|
||||||
|
@ -12,6 +12,11 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <Source/IO/FS/FS.hpp>
|
#include <Source/IO/FS/FS.hpp>
|
||||||
|
|
||||||
|
namespace Aurora::Process
|
||||||
|
{
|
||||||
|
void PosixForkResetLocks();
|
||||||
|
}
|
||||||
|
|
||||||
namespace Aurora::Processes
|
namespace Aurora::Processes
|
||||||
{
|
{
|
||||||
static void UnixOpenAsyncThread(AuString uri, bool bType)
|
static void UnixOpenAsyncThread(AuString uri, bool bType)
|
||||||
@ -60,6 +65,7 @@ namespace Aurora::Processes
|
|||||||
{
|
{
|
||||||
setsid();
|
setsid();
|
||||||
|
|
||||||
|
AuProcess::PosixForkResetLocks();
|
||||||
auto optStringA = AuProcess::EnvironmentGetOne("container");
|
auto optStringA = AuProcess::EnvironmentGetOne("container");
|
||||||
auto optStringB = AuProcess::EnvironmentGetOne("AURORA_RUNTIME_USE_GDBUS_BIN_TO_PORTAL");
|
auto optStringB = AuProcess::EnvironmentGetOne("AURORA_RUNTIME_USE_GDBUS_BIN_TO_PORTAL");
|
||||||
bool bIsFireJail = optStringA && optStringA.Value() == "firejail";
|
bool bIsFireJail = optStringA && optStringA.Value() == "firejail";
|
||||||
|
@ -47,6 +47,10 @@
|
|||||||
#include <sched.h>
|
#include <sched.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
namespace Aurora::Process
|
||||||
|
{
|
||||||
|
void PosixForkResetLocks();
|
||||||
|
}
|
||||||
|
|
||||||
namespace Aurora::Processes
|
namespace Aurora::Processes
|
||||||
{
|
{
|
||||||
@ -563,6 +567,8 @@ namespace Aurora::Processes
|
|||||||
|
|
||||||
void ProcessImpl::ForkMain()
|
void ProcessImpl::ForkMain()
|
||||||
{
|
{
|
||||||
|
AuProcess::PosixForkResetLocks();
|
||||||
|
|
||||||
{
|
{
|
||||||
::dup2(this->pipeStdIn_[0], STDIN_FILENO);
|
::dup2(this->pipeStdIn_[0], STDIN_FILENO);
|
||||||
::close(this->pipeStdIn_[0]);
|
::close(this->pipeStdIn_[0]);
|
||||||
|
Loading…
Reference in New Issue
Block a user