changeset 4440:116946128ea1 draft

sun: Don't read beyond the sockaddr length when making RTM
author Roy Marples <roy@marples.name>
date Tue, 16 Apr 2019 18:13:25 +0000
parents 5ed513825ce5
children 52d9fd948974 b232fd763431 e89d0b4f0bc7
files src/if-sun.c
diffstat 1 files changed, 5 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/if-sun.c	Tue Apr 16 18:12:16 2019 +0000
+++ b/src/if-sun.c	Tue Apr 16 18:13:25 2019 +0000
@@ -519,15 +519,15 @@
 {
 	struct rt_msghdr *rtm;
 	char *bp = rtmsg->buffer;
-	size_t l;
+	socklen_t sl;
 
 	/* WARNING: Solaris will not allow you to delete RTF_KERNEL routes.
 	 * This includes subnet/prefix routes. */
 
-#define ADDSA(sa) do {							      \
-		l = RT_ROUNDUP(salen((sa)));				      \
-		memcpy(bp, (sa), l);					      \
-		bp += l;						      \
+#define ADDSA(sa) do {							\
+		sl = salen((sa));					\
+		memcpy(bp, (sa), sl);					\
+		bp += RT_ROUNDUP(sl);					\
 	} while (/* CONSTCOND */ 0)
 
 	memset(rtmsg, 0, sizeof(*rtmsg));