Commit 5831945d authored by Stephen Hemminger's avatar Stephen Hemminger

[IPX]: Use size_t for size in {send,recv}msg.

parent 89aebaff
...@@ -1683,7 +1683,7 @@ int ipx_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt) ...@@ -1683,7 +1683,7 @@ int ipx_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt)
} }
static int ipx_sendmsg(struct kiocb *iocb, struct socket *sock, 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 sock *sk = sock->sk;
struct ipx_opt *ipxs = ipx_sk(sk); struct ipx_opt *ipxs = ipx_sk(sk);
...@@ -1698,6 +1698,10 @@ static int ipx_sendmsg(struct kiocb *iocb, struct socket *sock, ...@@ -1698,6 +1698,10 @@ static int ipx_sendmsg(struct kiocb *iocb, struct socket *sock,
if (flags & ~MSG_DONTWAIT) if (flags & ~MSG_DONTWAIT)
goto out; goto out;
/* Max possible packet size limited by 16 bit pktsize in header */
if (len >= 65535 - sizeof(struct ipxhdr))
goto out;
if (usipx) { if (usipx) {
if (!ipxs->port) { if (!ipxs->port) {
struct sockaddr_ipx uaddr; struct sockaddr_ipx uaddr;
...@@ -1744,7 +1748,7 @@ static int ipx_sendmsg(struct kiocb *iocb, struct socket *sock, ...@@ -1744,7 +1748,7 @@ static int ipx_sendmsg(struct kiocb *iocb, struct socket *sock,
static int ipx_recvmsg(struct kiocb *iocb, struct socket *sock, 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 sock *sk = sock->sk;
struct ipx_opt *ipxs = ipx_sk(sk); struct ipx_opt *ipxs = ipx_sk(sk);
......
...@@ -169,13 +169,13 @@ int ipxrtr_route_skb(struct sk_buff *skb) ...@@ -169,13 +169,13 @@ int ipxrtr_route_skb(struct sk_buff *skb)
* Route an outgoing frame from a socket. * Route an outgoing frame from a socket.
*/ */
int ipxrtr_route_packet(struct sock *sk, struct sockaddr_ipx *usipx, 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 sk_buff *skb;
struct ipx_opt *ipxs = ipx_sk(sk); struct ipx_opt *ipxs = ipx_sk(sk);
struct ipx_interface *intrfc; struct ipx_interface *intrfc;
struct ipxhdr *ipx; struct ipxhdr *ipx;
int size; size_t size;
int ipx_offset; int ipx_offset;
struct ipx_route *rt = NULL; struct ipx_route *rt = NULL;
int rc; int rc;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment