diff --git a/internal/wayland/conn.go b/internal/wayland/conn.go index c861c05..17ddae8 100644 --- a/internal/wayland/conn.go +++ b/internal/wayland/conn.go @@ -49,7 +49,7 @@ func New(displayPath, bindPath *check.Absolute, appID, instanceID string) (*Secu _ = syscall.Close(fd) return nil, &Error{RHostConnect, err} } else { - closeFds, bindErr := bindSecurityContext(fd, bindPath, appID, instanceID) + closeFds, bindErr := securityContextBindPipe(fd, bindPath, appID, instanceID) if bindErr != nil { // do not leak the pipe and socket err = errors.Join(bindErr, // already wrapped @@ -62,11 +62,15 @@ func New(displayPath, bindPath *check.Absolute, appID, instanceID string) (*Secu } } -// bindSecurityContext binds a socket associated to a security context created on serverFd, +// securityContextBindPipe binds a socket associated to a security context created on serverFd, // returning the pipe file descriptors used for security-context-v1 close_fd. // // A non-nil error unwraps to concrete type [Error]. -func bindSecurityContext(serverFd int, bindPath *check.Absolute, appID, instanceID string) ([2]int, error) { +func securityContextBindPipe( + serverFd int, + bindPath *check.Absolute, + appID, instanceID string, +) ([2]int, error) { // write end passed to security-context-v1 close_fd var closeFds [2]int if err := syscall.Pipe2(closeFds[0:], syscall.O_CLOEXEC); err != nil { @@ -74,7 +78,12 @@ func bindSecurityContext(serverFd int, bindPath *check.Absolute, appID, instance } // returned error is already wrapped - if err := bindWaylandFd(bindPath.String(), uintptr(serverFd), appID, instanceID, uintptr(closeFds[1])); err != nil { + if err := securityContextBind( + bindPath.String(), + serverFd, + appID, instanceID, + closeFds[1], + ); err != nil { return closeFds, errors.Join(err, syscall.Close(closeFds[1]), syscall.Close(closeFds[0]), diff --git a/internal/wayland/wayland-client-helper.c b/internal/wayland/wayland-client-helper.c index bf7b372..be9ddf0 100644 --- a/internal/wayland/wayland-client-helper.c +++ b/internal/wayland/wayland-client-helper.c @@ -31,7 +31,7 @@ static const struct wl_registry_listener registry_listener = { .global_remove = registry_handle_global_remove, }; -hakurei_wayland_res hakurei_bind_wayland_fd( +hakurei_wayland_res hakurei_security_context_bind( char *socket_path, int server_fd, const char *app_id, diff --git a/internal/wayland/wayland-client-helper.h b/internal/wayland/wayland-client-helper.h index fc75a87..6dfad88 100644 --- a/internal/wayland/wayland-client-helper.h +++ b/internal/wayland/wayland-client-helper.h @@ -23,7 +23,7 @@ typedef enum { HAKUREI_WAYLAND_HOST_CONNECT, } hakurei_wayland_res; -hakurei_wayland_res hakurei_bind_wayland_fd( +hakurei_wayland_res hakurei_security_context_bind( char *socket_path, int server_fd, const char *app_id, diff --git a/internal/wayland/wayland.go b/internal/wayland/wayland.go index ee8dfd1..5f2ecee 100644 --- a/internal/wayland/wayland.go +++ b/internal/wayland/wayland.go @@ -117,19 +117,26 @@ func (e *Error) Error() string { } } -// bindWaylandFd calls hakurei_bind_wayland_fd. A non-nil error has concrete type [Error]. -func bindWaylandFd(socketPath string, fd uintptr, appID, instanceID string, syncFd uintptr) error { +// securityContextBind calls hakurei_security_context_bind. +// +// A non-nil error has concrete type [Error]. +func securityContextBind( + socketPath string, + serverFd int, + appID, instanceID string, + closeFd int, +) error { if hasNull(appID) || hasNull(instanceID) { return syscall.EINVAL } var e Error - e.Cause, e.Errno = C.hakurei_bind_wayland_fd( + e.Cause, e.Errno = C.hakurei_security_context_bind( C.CString(socketPath), - C.int(fd), + C.int(serverFd), C.CString(appID), C.CString(instanceID), - C.int(syncFd), + C.int(closeFd), ) if e.Cause == RSuccess {