git: 44d4a7c01eea - main - security/netbird: fix build on armv7

From: Robert Clausecker <fuz_at_FreeBSD.org>
Date: Thu, 11 Sep 2025 15:10:13 UTC
The branch main has been updated by fuz:

URL: https://cgit.FreeBSD.org/ports/commit/?id=44d4a7c01eeaad23768ad3e2b34ba152636327c8

commit 44d4a7c01eeaad23768ad3e2b34ba152636327c8
Author:     Robert Clausecker <fuz@FreeBSD.org>
AuthorDate: 2025-09-06 11:26:50 +0000
Commit:     Robert Clausecker <fuz@FreeBSD.org>
CommitDate: 2025-09-11 15:09:49 +0000

    security/netbird: fix build on armv7
    
    A type error in some dependency.
    Also replace a really dodgy fake slice whose size overflowed a 32-bit
    integer with a proper use of unsafe.Slice().
    
    i386 still fails for an unrelated reason.
    
    Approved by:    portmgr (build fix blanket)
    MFH:            2025Q3
---
 security/netbird/Makefile                          |  1 +
 ...wgctrl_internal_wgfreebsd_internal_nv_decode.go | 11 ++++++++
 ...wgctrl_internal_wgfreebsd_internal_nv_encode.go | 33 ++++++++++++++++++++++
 3 files changed, 45 insertions(+)

diff --git a/security/netbird/Makefile b/security/netbird/Makefile
index cac5d2216eae..d018c374af81 100644
--- a/security/netbird/Makefile
+++ b/security/netbird/Makefile
@@ -1,6 +1,7 @@
 PORTNAME=	netbird
 DISTVERSIONPREFIX=	v
 DISTVERSION=	0.56.0
+PORTREVISION=	1
 CATEGORIES=	security net net-vpn
 
 MAINTAINER=	hakan.external@netbird.io
diff --git a/security/netbird/files/patch-vendor_golang.zx2c4.com_wireguard_wgctrl_internal_wgfreebsd_internal_nv_decode.go b/security/netbird/files/patch-vendor_golang.zx2c4.com_wireguard_wgctrl_internal_wgfreebsd_internal_nv_decode.go
new file mode 100644
index 000000000000..3d89c7d66a97
--- /dev/null
+++ b/security/netbird/files/patch-vendor_golang.zx2c4.com_wireguard_wgctrl_internal_wgfreebsd_internal_nv_decode.go
@@ -0,0 +1,11 @@
+--- vendor/golang.zx2c4.com/wireguard/wgctrl/internal/wgfreebsd/internal/nv/decode.go.orig	2025-09-06 11:14:13 UTC
++++ vendor/golang.zx2c4.com/wireguard/wgctrl/internal/wgfreebsd/internal/nv/decode.go
+@@ -13,7 +13,7 @@ func Unmarshal(d []byte, out List) error {
+ 
+ // Unmarshal decodes a FreeBSD name-value list (nv(9)) to a Go map
+ func Unmarshal(d []byte, out List) error {
+-	sz := C.ulong(len(d))
++	sz := C.size_t(len(d))
+ 	dp := unsafe.Pointer(&d[0])
+ 	nvl := C.nvlist_unpack(dp, sz, 0)
+ 
diff --git a/security/netbird/files/patch-vendor_golang.zx2c4.com_wireguard_wgctrl_internal_wgfreebsd_internal_nv_encode.go b/security/netbird/files/patch-vendor_golang.zx2c4.com_wireguard_wgctrl_internal_wgfreebsd_internal_nv_encode.go
new file mode 100644
index 000000000000..54a18ac871bf
--- /dev/null
+++ b/security/netbird/files/patch-vendor_golang.zx2c4.com_wireguard_wgctrl_internal_wgfreebsd_internal_nv_encode.go
@@ -0,0 +1,33 @@
+--- vendor/golang.zx2c4.com/wireguard/wgctrl/internal/wgfreebsd/internal/nv/encode.go.orig	2025-09-06 11:15:21 UTC
++++ vendor/golang.zx2c4.com/wireguard/wgctrl/internal/wgfreebsd/internal/nv/encode.go
+@@ -44,7 +44,7 @@ func marshal(m List) (nvl *C.struct_nvlist, err error)
+ 			C.nvlist_add_bool(nvl, ckey, C.bool(value))
+ 
+ 		case uint64:
+-			C.nvlist_add_number(nvl, ckey, C.ulong(value))
++			C.nvlist_add_number(nvl, ckey, C.uint64_t(value))
+ 
+ 		case []byte:
+ 			sz := len(value)
+@@ -54,8 +54,8 @@ func marshal(m List) (nvl *C.struct_nvlist, err error)
+ 
+ 		case []List:
+ 			sz := len(value)
+-			buf := C.malloc(C.size_t(C.sizeof_nvlist_ptr * sz))
+-			items := (*[1<<30 - 1]*C.struct_nvlist)(buf)
++			buf := (**C.struct_nvlist)(C.malloc(C.size_t(C.sizeof_nvlist_ptr * sz)))
++			items := unsafe.Slice(buf, sz)
+ 
+ 			for i, val := range value {
+ 				if items[i], err = marshal(val); err != nil {
+@@ -64,8 +64,8 @@ func marshal(m List) (nvl *C.struct_nvlist, err error)
+ 				}
+ 			}
+ 
+-			C.nvlist_add_nvlist_array(nvl, ckey, (**C.struct_nvlist)(buf), C.size_t(sz))
+-			C.free(buf)
++			C.nvlist_add_nvlist_array(nvl, ckey, buf, C.size_t(sz))
++			C.free(unsafe.Pointer(buf))
+ 		}
+ 
+ 		C.free(unsafe.Pointer(ckey))