[PATCH] BSD: Fix invalid pointer derefence in logging code

Stefan Haller stefan.haller at stha.de
Sun Apr 18 18:50:51 CEST 2021


For logging purposes a stack allocated net_addr struct was passed by
value as vararg (instead of the expected pointer). This resulted in a
segfault when the specific error condition got logged.
---
 sysdep/bsd/krt-sock.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sysdep/bsd/krt-sock.c b/sysdep/bsd/krt-sock.c
index c2faa23d..ea0cc4d9 100644
--- a/sysdep/bsd/krt-sock.c
+++ b/sysdep/bsd/krt-sock.c
@@ -453,7 +453,7 @@ krt_read_route(struct ks_msg *msg, struct krt_proto *p, int scan)
     net_fill_ip4(&ndst, ipa_to_ip4(idst), pxlen);
 
   if ((flags & RTF_GATEWAY) && ipa_zero(igate))
-    { log(L_ERR "%s (%N) - missing gateway", errmsg, ndst); return; }
+    { log(L_ERR "%s (%N) - missing gateway", errmsg, &ndst); return; }
 
   u32 self_mask = RTF_PROTO1;
   u32 alien_mask = RTF_STATIC | RTF_PROTO1 | RTF_GATEWAY;
-- 
2.31.1


More information about the Bird-users mailing list