DORMANTno replies

[PATCH 2/2] net: add BUG_ON if kernel advertises msg_namelen > sizeof(struct sockaddr_storage)

From: Hannes Frederic Sowa <hidden>
Date: 2013-11-21 02:14:35
Subsystem: networking [general], networking [sockets], the rest · Maintainers: "David S. Miller", Eric Dumazet, Jakub Kicinski, Paolo Abeni, Kuniyuki Iwashima, Willem de Bruijn, Linus Torvalds

In that case it is probable that kernel code overwrote part of the
stack. So we should bail out loudly here.

The BUG_ON may be removed in future if we are sure all protocols are
conformant.

Suggested-by: Eric Dumazet <redacted>
Signed-off-by: Hannes Frederic Sowa <redacted>
---
In the long term I want to add BUILD_BUG_ONs to catch these. I currently don't
know how to add them so they don't get missed by future new implementations.

Maybe a coccinelle check is better suited for this job.

I would suggest it for stable, too. Maybe after it cooked a bit on net
and in a RC.

 net/socket.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/net/socket.c b/net/socket.c
index fc28556..0b18693 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -221,12 +221,13 @@ static int move_addr_to_user(struct sockaddr_storage *kaddr, int klen,
 	int err;
 	int len;
 
+	BUG_ON(klen > sizeof(struct sockaddr_storage));
 	err = get_user(len, ulen);
 	if (err)
 		return err;
 	if (len > klen)
 		len = klen;
-	if (len < 0 || len > sizeof(struct sockaddr_storage))
+	if (len < 0)
 		return -EINVAL;
 	if (len) {
 		if (audit_sockaddr(klen, kaddr))
-- 
1.8.3.1
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help