]> git.baikalelectronics.ru Git - kernel.git/commit
packet: in recvmsg msg_name return at least sizeof sockaddr_ll
authorWillem de Bruijn <willemb@google.com>
Mon, 29 Apr 2019 15:46:55 +0000 (11:46 -0400)
committerDavid S. Miller <davem@davemloft.net>
Wed, 1 May 2019 15:27:55 +0000 (11:27 -0400)
commit04eba182a55b017582144c42ac5f8031f24bab0c
tree4236ee87de8e6e14adabdca0a66f153f4a14b5ba
parent523f5dfd71734ab0ef1112f4dc75ada4524c91c0
packet: in recvmsg msg_name return at least sizeof sockaddr_ll

Packet send checks that msg_name is at least sizeof sockaddr_ll.
Packet recv must return at least this length, so that its output
can be passed unmodified to packet send.

This ceased to be true since adding support for lladdr longer than
sll_addr. Since, the return value uses true address length.

Always return at least sizeof sockaddr_ll, even if address length
is shorter. Zero the padding bytes.

Change v1->v2: do not overwrite zeroed padding again. use copy_len.

Fixes: be65efe4ca0f ("[AF_PACKET]: Allow for > 8 byte hardware addresses.")
Suggested-by: David Laight <David.Laight@aculab.com>
Signed-off-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/packet/af_packet.c