]> xenbits.xensource.com Git - people/liuw/freebsd.git/commitdiff
- Fix a bug which prevented dnssl[0-9] and rdnss[0-9] parameters from
authorhrs <hrs@FreeBSD.org>
Thu, 22 Oct 2015 09:55:40 +0000 (09:55 +0000)
committerhrs <hrs@FreeBSD.org>
Thu, 22 Oct 2015 09:55:40 +0000 (09:55 +0000)
  working.

- Fix a pointer calculation for padding when multiple dnssl[0-9]
  parameters are specified [*].

Reported by: http://bugs.dragonflybsd.org/issues/2847 [*]

usr.sbin/rtadvd/config.c

index 4f14e0fbe82b632a2b6ec93a618ae7389f684f7e..d63af5a4ab4c15c11860709861a252e600cdb693 100644 (file)
@@ -808,7 +808,7 @@ getconfig_free_rti:
                makeentry(entbuf, sizeof(entbuf), i, "rdnss");
                addr = (char *)agetstr(entbuf, &bp);
                if (addr == NULL)
-                       break;
+                       continue;
                ELM_MALLOC(rdn, exit(1));
 
                TAILQ_INIT(&rdn->rd_list);
@@ -859,7 +859,7 @@ getconfig_free_rdn:
                makeentry(entbuf, sizeof(entbuf), i, "dnssl");
                addr = (char *)agetstr(entbuf, &bp);
                if (addr == NULL)
-                       break;
+                       continue;
 
                ELM_MALLOC(dns, exit(1));
 
@@ -1528,6 +1528,7 @@ make_packet(struct rainfo *rai)
                /* Padding to next 8 octets boundary */
                len = buf - (char *)ndopt_dnssl;
                len += (len % 8) ? 8 - len % 8 : 0;
+               buf = (char *)ndopt_dnssl + len;
 
                /* Length field must be in 8 octets */
                ndopt_dnssl->nd_opt_dnssl_len = len / 8;