]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
net: Limit socket I/O iovec total length to INT_MAX.
authorDavid S. Miller <davem@davemloft.net>
Thu, 28 Oct 2010 18:41:55 +0000 (11:41 -0700)
committerPaul Gortmaker <paul.gortmaker@windriver.com>
Sun, 17 Apr 2011 20:15:59 +0000 (16:15 -0400)
commitd3b379e224e2218c815c5ad3da9a6f8f108bbd0c
tree2a1ac53308ca9e27c2fe83305305435070ff2aac
parent9f1dd99a0eb80d2c1e93682c766bcddbdf42f30f
net: Limit socket I/O iovec total length to INT_MAX.

commit 8acfe468b0384e834a303f08ebc4953d72fb690a upstream.

This helps protect us from overflow issues down in the
individual protocol sendmsg/recvmsg handlers.  Once
we hit INT_MAX we truncate out the rest of the iovec
by setting the iov_len members to zero.

This works because:

1) For SOCK_STREAM and SOCK_SEQPACKET sockets, partial
   writes are allowed and the application will just continue
   with another write to send the rest of the data.

2) For datagram oriented sockets, where there must be a
   one-to-one correspondance between write() calls and
   packets on the wire, INT_MAX is going to be far larger
   than the packet size limit the protocol is going to
   check for and signal with -EMSGSIZE.

Based upon a patch by Linus Torvalds.

Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
include/linux/socket.h
net/compat.c
net/core/iovec.c