From: "Stephane A. Sezer" <[email protected]>

---
 usr.sbin/rtadvd/config.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/usr.sbin/rtadvd/config.c b/usr.sbin/rtadvd/config.c
index 3c72a6d..1edea84 100644
--- a/usr.sbin/rtadvd/config.c
+++ b/usr.sbin/rtadvd/config.c
@@ -724,8 +724,12 @@ make_packet(struct rainfo *rainfo)
 
                packlen += sizeof(struct nd_opt_dnssl);
 
+                /*
+                 * Each domain in the packet is prefixed by a single byte
+                 * containing its size.
+                 */
                TAILQ_FOREACH(dnsd, &dsl->dnssldoms, entry)
-                       domains_size += dnsd->length;
+                       domains_size += 1 + dnsd->length;
 
                domains_size = (domains_size + 7) & ~7;
 
@@ -850,7 +854,7 @@ make_packet(struct rainfo *rainfo)
 
                size = 0;
                TAILQ_FOREACH(dnsd, &dsl->dnssldoms, entry)
-                       size += dnsd->length;
+                       size += 1 + dnsd->length;
                /* align size on the next 8 byte boundary */
                size = (size + 7) & ~7;
                ndopt_dnssl->nd_opt_dnssl_len = 1 + size / 8;
-- 
Stephane A. Sezer

Reply via email to