Date: Wed, 29 Apr 2026 18:59:48 +0000 From: Pouria Mousavizadeh Tehrani <pouria@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: c5a92616c41f - main - if_gre(4): Fix gre_clone_dump_nl address dump Message-ID: <69f25524.38385.c9f1cef@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch main has been updated by pouria: URL: https://cgit.FreeBSD.org/src/commit/?id=c5a92616c41f9132d585c533e66dee88e98c73f2 commit c5a92616c41f9132d585c533e66dee88e98c73f2 Author: Pouria Mousavizadeh Tehrani <pouria@FreeBSD.org> AuthorDate: 2026-04-29 17:42:27 +0000 Commit: Pouria Mousavizadeh Tehrani <pouria@FreeBSD.org> CommitDate: 2026-04-29 18:57:46 +0000 if_gre(4): Fix gre_clone_dump_nl address dump Fix stack overflow by passing in_aliasreq instead of ifr during netlink dump. Fixes: e1e18cc12e68 ("if_gre: Add netlink support with tests") --- sys/net/if_gre.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/sys/net/if_gre.c b/sys/net/if_gre.c index f8036bf4446d..563478eb67f8 100644 --- a/sys/net/if_gre.c +++ b/sys/net/if_gre.c @@ -297,7 +297,6 @@ gre_clone_dump_nl(struct ifnet *ifp, struct nl_writer *nw) { GRE_RLOCK_TRACKER; struct gre_softc *sc; - struct ifreq ifr; nlattr_add_u32(nw, IFLA_LINK, ifp->if_index); nlattr_add_string(nw, IFLA_IFNAME, ifp->if_xname); @@ -318,21 +317,23 @@ gre_clone_dump_nl(struct ifnet *ifp, struct nl_writer *nw) if (sc->gre_family == AF_INET) { #ifdef INET - if (in_gre_ioctl(sc, SIOCGIFPSRCADDR, (caddr_t)&ifr) == 0) - nlattr_add_in_addr(nw, IFLA_GRE_LOCAL, - (const struct in_addr *)&ifr.ifr_addr); - if (in_gre_ioctl(sc, SIOCGIFPDSTADDR, (caddr_t)&ifr) == 0) + struct in_aliasreq in; + if (in_gre_ioctl(sc, SIOCGIFPSRCADDR, (caddr_t)&in) == 0) nlattr_add_in_addr(nw, IFLA_GRE_LOCAL, - (const struct in_addr *)&ifr.ifr_dstaddr); + &in.ifra_addr.sin_addr); + if (in_gre_ioctl(sc, SIOCGIFPDSTADDR, (caddr_t)&in) == 0) + nlattr_add_in_addr(nw, IFLA_GRE_REMOTE, + &in.ifra_addr.sin_addr); #endif } else if (sc->gre_family == AF_INET6) { #ifdef INET6 - if (in6_gre_ioctl(sc, SIOCGIFPSRCADDR_IN6, (caddr_t)&ifr) == 0) - nlattr_add_in6_addr(nw, IFLA_GRE_LOCAL, - (const struct in6_addr *)&ifr.ifr_addr); - if (in6_gre_ioctl(sc, SIOCGIFPDSTADDR_IN6, (caddr_t)&ifr) == 0) + struct in6_aliasreq in6; + if (in6_gre_ioctl(sc, SIOCGIFPSRCADDR_IN6, (caddr_t)&in6) == 0) nlattr_add_in6_addr(nw, IFLA_GRE_LOCAL, - (const struct in6_addr *)&ifr.ifr_dstaddr); + &in6.ifra_addr.sin6_addr); + if (in6_gre_ioctl(sc, SIOCGIFPDSTADDR_IN6, (caddr_t)&in6) == 0) + nlattr_add_in6_addr(nw, IFLA_GRE_REMOTE, + &in6.ifra_addr.sin6_addr); #endif }home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69f25524.38385.c9f1cef>
