wl: check against null character
Wayland library takes null terminated strings. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
parent
3c80fd2b0f
commit
d0dff1cac9
14
wl/wl.go
14
wl/wl.go
@ -10,7 +10,14 @@ package wl
|
|||||||
#include "wayland-bind.h"
|
#include "wayland-bind.h"
|
||||||
*/
|
*/
|
||||||
import "C"
|
import "C"
|
||||||
import "errors"
|
import (
|
||||||
|
"errors"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
ErrContainsNull = errors.New("string contains null character")
|
||||||
|
)
|
||||||
|
|
||||||
var resErr = [...]error{
|
var resErr = [...]error{
|
||||||
0: nil,
|
0: nil,
|
||||||
@ -19,6 +26,11 @@ var resErr = [...]error{
|
|||||||
}
|
}
|
||||||
|
|
||||||
func bindWaylandFd(socketPath string, fd uintptr, appID, instanceID string, syncFD uintptr) 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))
|
res := C.bind_wayland_fd(C.CString(socketPath), C.int(fd), C.CString(appID), C.CString(instanceID), C.int(syncFD))
|
||||||
return resErr[int32(res)]
|
return resErr[int32(res)]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func hasNull(s string) bool { return strings.IndexByte(s, '\x00') > -1 }
|
||||||
|
Loading…
Reference in New Issue
Block a user