On a PandaBoard (armv7) running -current, when I run rtadvd, it crashes
with a bus error shortly after printing (received a routing message). I
can reproduce by sending SIGHUP to a dhclient running on the same
I have traced this down to the following block of code in rtadvd.c.
int n, type, ifindex = 0, plen;
char msg, *next, *lim;
struct prefix *prefix;
struct rainfo *rai;
struct in6_addr *addr;
So msg is not 32-bit aligned, presumably because INET6_ADDRSTRLEN is 46.
I can fix the bus error by hardcoding 48, but of course that's not
Then msg is passed to get_next_msg (as next) where the expression
rtm->rtm_hdrlen (rtm is the not-aligned msg) is the first dereference
and thus the point where it crashes.
I'm at the point now where I think I've found the root of the problem
but don't know enough to fix it.