diff options
| author | Martin Ridgers <[email protected]> | 2022-02-21 12:53:47 +0100 |
|---|---|---|
| committer | Martin Ridgers <[email protected]> | 2022-02-21 12:53:47 +0100 |
| commit | f3722e2c7e27131be8395dedc9fcbb6a73cda80d (patch) | |
| tree | f363e44b32191779ba19b5b648362281dc89e1ae /zencore/thread.cpp | |
| parent | Allow all users and groups to read/write files (POSIX) (diff) | |
| download | zen-f3722e2c7e27131be8395dedc9fcbb6a73cda80d.tar.xz zen-f3722e2c7e27131be8395dedc9fcbb6a73cda80d.zip | |
Explicitly set access permissions so we're not affected by process' umask
Diffstat (limited to 'zencore/thread.cpp')
| -rw-r--r-- | zencore/thread.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/zencore/thread.cpp b/zencore/thread.cpp index 313f253f1..df8cb7a34 100644 --- a/zencore/thread.cpp +++ b/zencore/thread.cpp @@ -28,6 +28,7 @@ # include <signal.h> # include <sys/file.h> # include <sys/sem.h> +# include <sys/stat.h> # include <sys/wait.h> # include <time.h> # include <unistd.h> @@ -270,11 +271,12 @@ NamedEvent::NamedEvent(std::string_view EventName) ExtendableStringBuilder<64> EventPath; EventPath << "/tmp/" << EventName; - int Fd = open(EventPath.c_str(), O_RDWR | O_CREAT | O_CLOEXEC, 0666); + int Fd = open(EventPath.c_str(), O_RDWR | O_CREAT | O_CLOEXEC); if (Fd < 0) { ThrowLastError(fmt::format("Failed to create '{}' for named event", EventPath)); } + fchmod(Fd, 0666); // Use the file path to generate an IPC key key_t IpcKey = ftok(EventPath.c_str(), 1); @@ -446,11 +448,12 @@ NamedMutex::Create(std::string_view MutexName) ExtendableStringBuilder<64> Name; Name << "/tmp/" << MutexName; - int Inner = open(Name.c_str(), O_RDWR | O_CREAT | O_CLOEXEC, 0666); + int Inner = open(Name.c_str(), O_RDWR | O_CREAT | O_CLOEXEC); if (Inner < 0) { return false; } + fchmod(Inner, 0666); if (flock(Inner, LOCK_EX) != 0) { @@ -489,7 +492,7 @@ NamedMutex::Exists(std::string_view MutexName) Name << "/tmp/" << MutexName; bool bExists = false; - int Fd = open(Name.c_str(), O_RDWR | O_CLOEXEC, 0666); + int Fd = open(Name.c_str(), O_RDWR | O_CLOEXEC); if (Fd >= 0) { if (flock(Fd, LOCK_EX | LOCK_NB) == 0) |