I saw the following assert:

bear --append --output ~/wip-src/compile_commands.json --force-wrapper -- make
WARNING: All log messages before absl::InitializeLog() is called are written to 
STDERR
F0000 00:00:1754041060.840315  558285 resolved_address.cc:32] Check failed: 
static_cast<sizet>(size) <= sizeof(address)

Here is a simple fix that uses sa_len if present.

OK?

Index: Makefile
===================================================================
RCS file: /cvs/ports/net/grpc/Makefile,v
diff -u -p -u -p -r1.8 Makefile
--- Makefile    27 Jul 2025 07:16:17 -0000      1.8
+++ Makefile    1 Aug 2025 10:20:26 -0000
@@ -5,6 +5,7 @@ COMMENT =       HTTP/2-based RPC framework
 
 V =            1.74.0
 DISTNAME =     grpc-${V}
+REVISION =     0
 
 DIST_TUPLE +=  github grpc grpc v${V} .
 
Index: patches/patch-src_core_lib_event_engine_resolved_address_cc
===================================================================
RCS file: patches/patch-src_core_lib_event_engine_resolved_address_cc
diff -N patches/patch-src_core_lib_event_engine_resolved_address_cc
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_core_lib_event_engine_resolved_address_cc 1 Aug 2025 
10:20:26 -0000
@@ -0,0 +1,18 @@
+Index: src/core/lib/event_engine/resolved_address.cc
+--- src/core/lib/event_engine/resolved_address.cc.orig
++++ src/core/lib/event_engine/resolved_address.cc
+@@ -29,8 +29,14 @@ EventEngine::ResolvedAddress::ResolvedAddress(const so
+                                               socklen_t size)
+     : size_(size) {
+   DCHECK_GE(size, 0u);
++#ifdef __OpenBSD__
++  socklen_t actual_size = address->sa_len > 0 ? address->sa_len : size;
++  CHECK(static_cast<size_t>(actual_size) <= sizeof(address_));
++  memcpy(&address_, address, actual_size);
++#else
+   CHECK(static_cast<size_t>(size) <= sizeof(address_));
+   memcpy(&address_, address, size);
++#endif
+ }
+ 
+ const struct sockaddr* EventEngine::ResolvedAddress::address() const {

Reply via email to