Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 23 Aug 2015 18:51:16 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-bugs@FreeBSD.org
Subject:   [Bug 202600] [patch] ndp(8): fix unaligned accesses
Message-ID:  <bug-202600-8@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=202600

            Bug ID: 202600
           Summary: [patch] ndp(8): fix unaligned accesses
           Product: Base System
           Version: 11.0-CURRENT
          Hardware: Any
                OS: Any
            Status: New
          Keywords: patch
          Severity: Affects Some People
          Priority: ---
         Component: bin
          Assignee: freebsd-bugs@FreeBSD.org
          Reporter: naddy@FreeBSD.org
          Keywords: patch

Created attachment 160262
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=160262&action=edit
ndp.c diff

ndp -p performs unaligned accesses on architectures that require strict
alignment for 64-bit types (e.g. sparc64). Even if we trap these on FreeBSD
rather than sending SIGBUS, this should be fixed.

The sysctl used to pass the prefix list uses a packed format:
  one struct in6_prefix, several struct sockaddr_in6,
  one struct in6_prefix, several struct sockaddr_in6,
  ...
This was fine when both structs had the same alignment requirement (int32_t). 
However, there is a time_t in in6_prefix which has pushed that struct's
alignment to int64_t.

The attached patch is taken from NetBSD (Martin Husemann):
http://cvsweb.netbsd.org/bsdweb.cgi/src/usr.sbin/ndp/ndp.c.diff?r1=1.41&r2=1.42
"Simplify code to print the router/prefix list: use memcpy and local structs
properly aligned on the stack to decode the binary format passed by the kernel
- instead of (bogusly) assuming the format will obey all local alignement
requirements."

The kernel side of this was fixed independently in r235681.

-- 
You are receiving this mail because:
You are the assignee for the bug.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-202600-8>