Skip to contentSkip to conversation

(8/17) ipx -- size_t for send/recvmsg

PATCH In review Stephen Hemminger 2 participants 2 messages Jan 8, 2004 – Jan 9, 2004

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 (8/17) ipx -- size_t for send/recvmsg

Convert IPX to unsigned for send/receive message length. Enforce MTU limited by header pktsize.

net/ipx/af_ipx.c +6 -2
diff -Nru a/net/ipx/af_ipx.c b/net/ipx/af_ipx.c
@@ -1683,7 +1683,7 @@
 }
 
 static int ipx_sendmsg(struct kiocb *iocb, struct socket *sock,
-	struct msghdr *msg, int len)
+	struct msghdr *msg, size_t len)
 {
 	struct sock *sk = sock->sk;
 	struct ipx_opt *ipxs = ipx_sk(sk);
@@ -1698,6 +1698,10 @@
 	if (flags & ~MSG_DONTWAIT)
 		goto out;
 
+	/* Max possible packet size limited by 16 bit pktsize in header */
+	if (len >= 65535 - sizeof(struct ipxhdr))
+		goto out;
+
 	if (usipx) {
 		if (!ipxs->port) {
 			struct sockaddr_ipx uaddr;
@@ -1744,7 +1748,7 @@
 
 
 static int ipx_recvmsg(struct kiocb *iocb, struct socket *sock,
-		struct msghdr *msg, int size, int flags)
+		struct msghdr *msg, size_t size, int flags)
 {
 	struct sock *sk = sock->sk;
 	struct ipx_opt *ipxs = ipx_sk(sk);
net/ipx/ipx_route.c +2 -2
diff -Nru a/net/ipx/ipx_route.c b/net/ipx/ipx_route.c
@@ -169,13 +169,13 @@
  * Route an outgoing frame from a socket.
  */
 int ipxrtr_route_packet(struct sock *sk, struct sockaddr_ipx *usipx,
-			struct iovec *iov, int len, int noblock)
+			struct iovec *iov, size_t len, int noblock)
 {
 	struct sk_buff *skb;
 	struct ipx_opt *ipxs = ipx_sk(sk);
 	struct ipx_interface *intrfc;
 	struct ipxhdr *ipx;
-	int size;
+	size_t size;
 	int ipx_offset;
 	struct ipx_route *rt = NULL;
 	int rc;
#1 lore raw

Em Fri, Jan 09, 2004 at 02:02:23PM -0800, Stephen Hemminger escreveu:

Quoted 2 lines

Convert IPX to unsigned for send/receive message length. Enforce MTU limited by header pktsize.

ACK, thanks Stephen.