aboutsummaryrefslogtreecommitdiffhomepage
path: root/wl
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-02-23 03:24:37 +0900
committerOphestra <cat@gensokyo.uk>2025-02-23 03:24:37 +0900
commiteda4d612c2e64321766e1074a698caeae843102a (patch)
treec492042ffd52930c8578884ec2800a25690bae3a /wl
parent2e7e16068372a0c0b42bd6b3da2433134c91a495 (diff)
fortify: keep external files alive
This should eliminate sporadic failures, like the known double close in "seccomp". Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'wl')
-rw-r--r--wl/conn.go1
-rw-r--r--wl/wayland-bind.c2
-rw-r--r--wl/wayland-bind.h2
-rw-r--r--wl/wl.go2
4 files changed, 4 insertions, 3 deletions
diff --git a/wl/conn.go b/wl/conn.go
index 82c0587b..1a7cba65 100644
--- a/wl/conn.go
+++ b/wl/conn.go
@@ -94,6 +94,7 @@ func bindRawConn(done chan struct{}, rc syscall.RawConn, p, appID, instanceID st
// keep socket alive until done is requested
<-done
+ runtime.KeepAlive(syncPipe[1].Fd())
}); err != nil {
setupDone <- err
}
diff --git a/wl/wayland-bind.c b/wl/wayland-bind.c
index a177a378..01e8b882 100644
--- a/wl/wayland-bind.c
+++ b/wl/wayland-bind.c
@@ -23,7 +23,7 @@ static const struct wl_registry_listener registry_listener = {
.global_remove = registry_handle_global_remove,
};
-int32_t bind_wayland_fd(char *socket_path, int fd, const char *app_id, const char *instance_id, int sync_fd) {
+int32_t f_bind_wayland_fd(char *socket_path, int fd, const char *app_id, const char *instance_id, int sync_fd) {
int32_t res = 0; // refer to resErr for meaning
struct wl_display *display;
diff --git a/wl/wayland-bind.h b/wl/wayland-bind.h
index 67898fc6..720dfe4e 100644
--- a/wl/wayland-bind.h
+++ b/wl/wayland-bind.h
@@ -1,3 +1,3 @@
#include <stdint.h>
-int32_t bind_wayland_fd(char *socket_path, int fd, const char *app_id, const char *instance_id, int sync_fd); \ No newline at end of file
+int32_t f_bind_wayland_fd(char *socket_path, int fd, const char *app_id, const char *instance_id, int sync_fd); \ No newline at end of file
diff --git a/wl/wl.go b/wl/wl.go
index da1ed2c8..51ad1fd2 100644
--- a/wl/wl.go
+++ b/wl/wl.go
@@ -29,7 +29,7 @@ func bindWaylandFd(socketPath string, fd uintptr, appID, instanceID string, sync
if hasNull(appID) || hasNull(instanceID) {
return ErrContainsNull
}
- res := C.bind_wayland_fd(C.CString(socketPath), C.int(fd), C.CString(appID), C.CString(instanceID), C.int(syncFD))
+ res := C.f_bind_wayland_fd(C.CString(socketPath), C.int(fd), C.CString(appID), C.CString(instanceID), C.int(syncFD))
return resErr[int32(res)]
}