]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
BSD: Workaround for direct routes on FreeBSD 13.0
authorOndrej Zajicek <santiago@crfreenet.org>
Sun, 11 Dec 2022 15:28:28 +0000 (16:28 +0100)
committerOndrej Zajicek <santiago@crfreenet.org>
Sun, 11 Dec 2022 15:28:28 +0000 (16:28 +0100)
FreeBSD 13.0 added some safechecks for syscalls, rejecting sockaddrs that
are too small, later versions loosen up the check.

sysdep/bsd/krt-sock.c

index 256c4ed089b29e6760f0af76267bd5668a2ae5e0..47f5cf595fc4e9d2da251c543bd4d6f134cd05c8 100644 (file)
@@ -190,6 +190,10 @@ static inline void
 sockaddr_fill_dl(struct sockaddr_dl *sa, struct iface *ifa)
 {
   uint len = OFFSETOF(struct sockaddr_dl, sdl_data);
+
+  /* Workaround for FreeBSD 13.0 */
+  len = MAX(len, sizeof(struct sockaddr));
+
   memset(sa, 0, len);
   sa->sdl_len = len;
   sa->sdl_family = AF_LINK;