Doing a variable-sized memcpy is slower, and the compiler isn't smart
enough to turn this into a constant-size assignment.
Further, Kees' latest fortified memcpy will actually bark, because the
destination pointer is type sockaddr, not explicitly sockaddr_in or
sockaddr_in6, so it thinks there's an overflow:
memcpy: detected field-spanning write (size 28) of single field
"&endpoint.addr" at drivers/net/wireguard/netlink.c:446 (size 16)
Fix this by just assigning by using explicit casts for each checked
case.
Fixes:
|
||
|---|---|---|
| .. | ||
| selftest | ||
| Makefile | ||
| allowedips.c | ||
| allowedips.h | ||
| cookie.c | ||
| cookie.h | ||
| device.c | ||
| device.h | ||
| main.c | ||
| messages.h | ||
| netlink.c | ||
| netlink.h | ||
| noise.c | ||
| noise.h | ||
| peer.c | ||
| peer.h | ||
| peerlookup.c | ||
| peerlookup.h | ||
| queueing.c | ||
| queueing.h | ||
| ratelimiter.c | ||
| ratelimiter.h | ||
| receive.c | ||
| send.c | ||
| socket.c | ||
| socket.h | ||
| timers.c | ||
| timers.h | ||
| version.h | ||