Merge branch 'net-fix-error-warning-by-fstrict-flex-arrays-3'
Kuniyuki Iwashima says:
====================
net: Fix error/warning by -fstrict-flex-arrays=3.
df8fc4e934
("kbuild: Enable -fstrict-flex-arrays=3") started applying
strict rules for standard string functions (strlen(), memcpy(), etc.) if
CONFIG_FORTIFY_SOURCE=y.
This series fixes two false positives caught by syzkaller.
v2: https://lore.kernel.org/netdev/20230720004410.87588-1-kuniyu@amazon.com/
v1: https://lore.kernel.org/netdev/20230719185322.44255-1-kuniyu@amazon.com/
====================
Link: https://lore.kernel.org/r/20230724213425.22920-1-kuniyu@amazon.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
commit
a49441c9ab
@ -18,7 +18,11 @@ struct sockaddr_ll {
|
|||||||
unsigned short sll_hatype;
|
unsigned short sll_hatype;
|
||||||
unsigned char sll_pkttype;
|
unsigned char sll_pkttype;
|
||||||
unsigned char sll_halen;
|
unsigned char sll_halen;
|
||||||
unsigned char sll_addr[8];
|
union {
|
||||||
|
unsigned char sll_addr[8];
|
||||||
|
/* Actual length is in sll_halen. */
|
||||||
|
__DECLARE_FLEX_ARRAY(unsigned char, sll_addr_flex);
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Packet types */
|
/* Packet types */
|
||||||
|
@ -3601,7 +3601,7 @@ static int packet_getname(struct socket *sock, struct sockaddr *uaddr,
|
|||||||
if (dev) {
|
if (dev) {
|
||||||
sll->sll_hatype = dev->type;
|
sll->sll_hatype = dev->type;
|
||||||
sll->sll_halen = dev->addr_len;
|
sll->sll_halen = dev->addr_len;
|
||||||
memcpy(sll->sll_addr, dev->dev_addr, dev->addr_len);
|
memcpy(sll->sll_addr_flex, dev->dev_addr, dev->addr_len);
|
||||||
} else {
|
} else {
|
||||||
sll->sll_hatype = 0; /* Bad: we have no ARPHRD_UNSPEC */
|
sll->sll_hatype = 0; /* Bad: we have no ARPHRD_UNSPEC */
|
||||||
sll->sll_halen = 0;
|
sll->sll_halen = 0;
|
||||||
|
@ -1208,10 +1208,8 @@ static int unix_bind_bsd(struct sock *sk, struct sockaddr_un *sunaddr,
|
|||||||
struct path parent;
|
struct path parent;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
unix_mkname_bsd(sunaddr, addr_len);
|
addr_len = strnlen(sunaddr->sun_path, sizeof(sunaddr->sun_path))
|
||||||
addr_len = strlen(sunaddr->sun_path) +
|
+ offsetof(struct sockaddr_un, sun_path) + 1;
|
||||||
offsetof(struct sockaddr_un, sun_path) + 1;
|
|
||||||
|
|
||||||
addr = unix_create_addr(sunaddr, addr_len);
|
addr = unix_create_addr(sunaddr, addr_len);
|
||||||
if (!addr)
|
if (!addr)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
Loading…
Reference in New Issue
Block a user