git: de703e98e6c8 - stable/13 - Fix direct route installation with net/bird.
Alexander V. Chernikov
melifaro at FreeBSD.org
Mon Apr 19 19:03:15 UTC 2021
The branch stable/13 has been updated by melifaro:
URL: https://cgit.FreeBSD.org/src/commit/?id=de703e98e6c863874aa6012e3ce1a61eee58c846
commit de703e98e6c863874aa6012e3ce1a61eee58c846
Author: Alexander V. Chernikov <melifaro at FreeBSD.org>
AuthorDate: 2021-04-10 15:25:24 +0000
Commit: Alexander V. Chernikov <melifaro at FreeBSD.org>
CommitDate: 2021-04-19 18:52:57 +0000
Fix direct route installation with net/bird.
Slighly relax the gateway validation rules imposed by the
2fe5a79425c7, by requiring only first 8 bytes (everyhing
before sdl_data to be present in the AF_LINK gateway.
Reported by: olivier
PR: 255089
(cherry picked from commit 7f5f3fcc32bfa553faa007579dfcaed84be3b047)
---
sys/net/rtsock.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/sys/net/rtsock.c b/sys/net/rtsock.c
index 12e485f917c8..c0996d318fb2 100644
--- a/sys/net/rtsock.c
+++ b/sys/net/rtsock.c
@@ -1381,20 +1381,21 @@ cleanup_xaddrs_gateway(struct rt_addrinfo *info)
#endif
case AF_LINK:
{
- struct sockaddr_dl_short *gw_sdl;
+ struct sockaddr_dl *gw_sdl;
- gw_sdl = (struct sockaddr_dl_short *)gw;
- if (gw_sdl->sdl_len < sizeof(struct sockaddr_dl_short)) {
+ size_t sdl_min_len = offsetof(struct sockaddr_dl, sdl_data);
+ gw_sdl = (struct sockaddr_dl *)gw;
+ if (gw_sdl->sdl_len < sdl_min_len) {
printf("gw sdl_len too small\n");
return (EINVAL);
}
const struct sockaddr_dl_short sdl = {
.sdl_family = AF_LINK,
- .sdl_len = sizeof(struct sockaddr_dl_short),
+ .sdl_len = sdl_min_len,
.sdl_index = gw_sdl->sdl_index,
};
- *gw_sdl = sdl;
+ memcpy(gw_sdl, &sdl, sdl_min_len);
break;
}
}
More information about the dev-commits-src-branches
mailing list