From 904664d0b01e6975940cad8f1d1913062884ab16 Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Tue, 19 May 2026 12:47:48 +0200 Subject: [PATCH] avoid out of bounds write in unlock_notify_wait on 64 bit platforms While `C.sizeof_unit` is 4, we convert to a Go uint and write it to the pointer. The Go uint is eight bytes on 64 bit platforms. Signed-off-by: Jakob Borg --- sqlite3_opt_unlock_notify.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sqlite3_opt_unlock_notify.go b/sqlite3_opt_unlock_notify.go index 3ac8050..dddb655 100644 --- a/sqlite3_opt_unlock_notify.go +++ b/sqlite3_opt_unlock_notify.go @@ -21,6 +21,7 @@ package sqlite3 extern void unlock_notify_callback(void *arg, int argc); */ import "C" + import ( "fmt" "math" @@ -82,7 +83,7 @@ func unlock_notify_wait(db *C.sqlite3) C.int { h := unt.add(c) defer unt.remove(h) - pargv := C.malloc(C.sizeof_uint) + pargv := C.malloc(C.size_t(unsafe.Sizeof(uint(0)))) defer C.free(pargv) argv := (*[1]uint)(pargv)