security_context_v1: set CLOEXEC for client FDs

Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/work_items/3949
(cherry picked from commit 327f000532)
This commit is contained in:
Simon Ser 2026-07-03 13:59:01 +02:00 committed by Simon Zeni
parent eb02e65df4
commit d9cd649551
7 changed files with 39 additions and 19 deletions

View file

@ -16,6 +16,7 @@
#include <wlr/xwayland.h>
#include "config.h"
#include "sockets.h"
#include "util/fd.h"
static void safe_close(int fd) {
if (fd >= 0) {

View file

@ -14,6 +14,7 @@
#include <unistd.h>
#include <wlr/util/log.h>
#include "sockets.h"
#include "util/fd.h"
static const char lock_fmt[] = "/tmp/.X%d-lock";
static const char socket_dir[] = "/tmp/.X11-unix";
@ -22,24 +23,6 @@ static const char socket_fmt[] = "/tmp/.X11-unix/X%d";
static const char socket_fmt2[] = "/tmp/.X11-unix/X%d_";
#endif
bool set_cloexec(int fd, bool cloexec) {
int flags = fcntl(fd, F_GETFD);
if (flags == -1) {
wlr_log_errno(WLR_ERROR, "fcntl failed");
return false;
}
if (cloexec) {
flags = flags | FD_CLOEXEC;
} else {
flags = flags & ~FD_CLOEXEC;
}
if (fcntl(fd, F_SETFD, flags) == -1) {
wlr_log_errno(WLR_ERROR, "fcntl failed");
return false;
}
return true;
}
static int open_socket(struct sockaddr_un *addr, size_t path_size) {
int fd, rc;
socklen_t size = offsetof(struct sockaddr_un, sun_path) + path_size + 1;

View file

@ -3,7 +3,6 @@
#include <stdbool.h>
bool set_cloexec(int fd, bool cloexec);
void unlink_display_sockets(int display);
int open_display_sockets(int socks[2]);