Message ID | 20200813101301.12720-1-gert@greenie.muc.de |
---|---|
State | Accepted |
Headers | show |
Series | [Openvpn-devel] Fix stack overflow in OpenSolaris NEXTADDR() | expand |
Am 13.08.20 um 12:13 schrieb Gert Doering: > Commit 5fde831c5807 fixed NEXTADDR() for all *BSDs and MacOS. > > OpenSolaris has to use a slightly different macro due to lack of > sockaddr->sa_len - but it has the same problem, first rounding up, > then memmove()'ing. Switch order. > > Signed-off-by: Gert Doering <gert@greenie.muc.de> > --- > src/openvpn/route.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/src/openvpn/route.c b/src/openvpn/route.c > index 24563ed6..f127a90a 100644 > --- a/src/openvpn/route.c > +++ b/src/openvpn/route.c > @@ -3429,7 +3429,7 @@ struct rtmsg { > #if defined(TARGET_SOLARIS) > #define NEXTADDR(w, u) \ > if (rtm_addrs & (w)) { \ > - l = ROUNDUP(sizeof(u)); memmove(cp, &(u), l); cp += l; \ > + l = sizeof(u); memmove(cp, &(u), l); cp += ROUNDUP(l); \ > } > > #define ADVANCE(x, n) (x += ROUNDUP(sizeof(struct sockaddr_in))) > Acked-By: Arne Schwabe <arne@rfc2549.org>
Patch has been applied to the master, 2.5 and 2.4 branch (bugfix). commit 7e65483d1227adfb855844467e4d30894ffc355d (master) commit 7b9dd9b091a3cad126642314ea945bafa4e91481 (release/2.5) commit 5f88c077de8da4a4c5369ae67f5815e4abc50edc (release/2.4) Author: Gert Doering Date: Thu Aug 13 12:13:01 2020 +0200 Fix stack overflow in OpenSolaris NEXTADDR() Signed-off-by: Gert Doering <gert@greenie.muc.de> Acked-by: Arne Schwabe <arne@rfc2549.org> Message-Id: <20200813101301.12720-1-gert@greenie.muc.de> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg20731.html Signed-off-by: Gert Doering <gert@greenie.muc.de> -- kind regards, Gert Doering
diff --git a/src/openvpn/route.c b/src/openvpn/route.c index 24563ed6..f127a90a 100644 --- a/src/openvpn/route.c +++ b/src/openvpn/route.c @@ -3429,7 +3429,7 @@ struct rtmsg { #if defined(TARGET_SOLARIS) #define NEXTADDR(w, u) \ if (rtm_addrs & (w)) { \ - l = ROUNDUP(sizeof(u)); memmove(cp, &(u), l); cp += l; \ + l = sizeof(u); memmove(cp, &(u), l); cp += ROUNDUP(l); \ } #define ADVANCE(x, n) (x += ROUNDUP(sizeof(struct sockaddr_in)))
Commit 5fde831c5807 fixed NEXTADDR() for all *BSDs and MacOS. OpenSolaris has to use a slightly different macro due to lack of sockaddr->sa_len - but it has the same problem, first rounding up, then memmove()'ing. Switch order. Signed-off-by: Gert Doering <gert@greenie.muc.de> --- src/openvpn/route.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)