瀏覽代碼

net: Cap number of elements for sendmmsg

To limit the amount of time we can spend in sendmmsg, cap the
number of elements to UIO_MAXIOV (currently 1024).

For error handling an application using sendmmsg needs to retry at
the first unsent message, so capping is simpler and requires less
application logic than returning EINVAL.

Signed-off-by: Anton Blanchard <anton@samba.org>
Cc: stable <stable@kernel.org> [3.0+]
Signed-off-by: David S. Miller <davem@davemloft.net>
Anton Blanchard 14 年之前
父節點
當前提交
98382f419f
共有 1 個文件被更改,包括 3 次插入0 次删除
  1. 3 0
      net/socket.c

+ 3 - 0
net/socket.c

@@ -1999,6 +1999,9 @@ int __sys_sendmmsg(int fd, struct mmsghdr __user *mmsg, unsigned int vlen,
 	struct compat_mmsghdr __user *compat_entry;
 	struct compat_mmsghdr __user *compat_entry;
 	struct msghdr msg_sys;
 	struct msghdr msg_sys;
 
 
+	if (vlen > UIO_MAXIOV)
+		vlen = UIO_MAXIOV;
+
 	datagrams = 0;
 	datagrams = 0;
 
 
 	sock = sockfd_lookup_light(fd, &err, &fput_needed);
 	sock = sockfd_lookup_light(fd, &err, &fput_needed);