]> git.ipfire.org Git - thirdparty/openvpn.git/commitdiff
Fix stack overflow in OpenSolaris NEXTADDR()
authorGert Doering <gert@greenie.muc.de>
Thu, 13 Aug 2020 10:13:01 +0000 (12:13 +0200)
committerGert Doering <gert@greenie.muc.de>
Fri, 14 Aug 2020 12:38:24 +0000 (14:38 +0200)
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>
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>
(cherry picked from commit 7e65483d1227adfb855844467e4d30894ffc355d)

src/openvpn/route.c

index c66217adb8930d1bad3278bf1611dcbaa18c743b..dd456cc42334cf9107a7c8fb90566fc42158ef4b 100644 (file)
@@ -3568,7 +3568,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)))