]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
sun: Don't read beyond the sockaddr length when making RTM
authorRoy Marples <roy@marples.name>
Tue, 16 Apr 2019 18:13:25 +0000 (18:13 +0000)
committerRoy Marples <roy@marples.name>
Tue, 16 Apr 2019 18:13:25 +0000 (18:13 +0000)
src/if-sun.c

index ef1ddf48d85ac260dfd1941f241ff920e08cfec2..a4e1ae80ccb616845edd223f4fbb17b80d2e3318 100644 (file)
@@ -519,15 +519,15 @@ if_route0(struct dhcpcd_ctx *ctx, struct rtm *rtmsg,
 {
        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));