From: hrs Date: Thu, 22 Oct 2015 09:55:40 +0000 (+0000) Subject: - Fix a bug which prevented dnssl[0-9] and rdnss[0-9] parameters from X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=15487e4934ed7fd4b74d35a1f97c920bca72ef11;p=people%2Fliuw%2Ffreebsd.git - Fix a bug which prevented dnssl[0-9] and rdnss[0-9] parameters from working. - Fix a pointer calculation for padding when multiple dnssl[0-9] parameters are specified [*]. Reported by: http://bugs.dragonflybsd.org/issues/2847 [*] --- diff --git a/usr.sbin/rtadvd/config.c b/usr.sbin/rtadvd/config.c index 4f14e0fbe82..d63af5a4ab4 100644 --- a/usr.sbin/rtadvd/config.c +++ b/usr.sbin/rtadvd/config.c @@ -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;