sa points to a struct sockaddr inside a union where the
biggest member os sockaddr_in6.
We cast sa to char *, and then write to the address offset
directly which will go beyond a sockaddr if we're writing
a sockaddr_in6 - but this is fine, the union caters for it.
sa->sa_family = rtm->rtm_family;
salen = sa_addrlen(sa);
+ /* sa is a union where sockaddr_in6 is the biggest. */
+ /* coverity[overrun-buffer-arg] */
memcpy((char *)sa + sa_addroffset(sa), RTA_DATA(rta),
MIN(salen, RTA_PAYLOAD(rta)));
}