From d0dff1cac96b9e509ce7aab011d9db684c356f9c Mon Sep 17 00:00:00 2001 From: Ophestra Date: Wed, 19 Feb 2025 23:35:49 +0900 Subject: [PATCH] wl: check against null character Wayland library takes null terminated strings. Signed-off-by: Ophestra --- wl/wl.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/wl/wl.go b/wl/wl.go index 2eb0e89..da1ed2c 100644 --- a/wl/wl.go +++ b/wl/wl.go @@ -10,7 +10,14 @@ package wl #include "wayland-bind.h" */ import "C" -import "errors" +import ( + "errors" + "strings" +) + +var ( + ErrContainsNull = errors.New("string contains null character") +) var resErr = [...]error{ 0: nil, @@ -19,6 +26,11 @@ var resErr = [...]error{ } func bindWaylandFd(socketPath string, fd uintptr, appID, instanceID string, syncFD uintptr) error { + 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)) return resErr[int32(res)] } + +func hasNull(s string) bool { return strings.IndexByte(s, '\x00') > -1 }