diff options
author | David S. Miller <davem@davemloft.net> | 2009-09-30 19:12:20 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-09-30 19:12:20 -0400 |
commit | b7058842c940ad2c08dd829b21e5c92ebe3b8758 (patch) | |
tree | 5fe78d599fc345ca0bcd4b083b79095a54b2921b /include/net/ip.h | |
parent | eb1cf0f8f7a9e5a6d573d5bd72c015686a042db0 (diff) |
net: Make setsockopt() optlen be unsigned.
This provides safety against negative optlen at the type
level instead of depending upon (sometimes non-trivial)
checks against this sprinkled all over the the place, in
each and every implementation.
Based upon work done by Arjan van de Ven and feedback
from Linus Torvalds.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/ip.h')
-rw-r--r-- | include/net/ip.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/include/net/ip.h b/include/net/ip.h index 5b26a0bd178e..2f47e5482b55 100644 --- a/include/net/ip.h +++ b/include/net/ip.h | |||
@@ -381,10 +381,10 @@ extern int ip_options_rcv_srr(struct sk_buff *skb); | |||
381 | extern void ip_cmsg_recv(struct msghdr *msg, struct sk_buff *skb); | 381 | extern void ip_cmsg_recv(struct msghdr *msg, struct sk_buff *skb); |
382 | extern int ip_cmsg_send(struct net *net, | 382 | extern int ip_cmsg_send(struct net *net, |
383 | struct msghdr *msg, struct ipcm_cookie *ipc); | 383 | struct msghdr *msg, struct ipcm_cookie *ipc); |
384 | extern int ip_setsockopt(struct sock *sk, int level, int optname, char __user *optval, int optlen); | 384 | extern int ip_setsockopt(struct sock *sk, int level, int optname, char __user *optval, unsigned int optlen); |
385 | extern int ip_getsockopt(struct sock *sk, int level, int optname, char __user *optval, int __user *optlen); | 385 | extern int ip_getsockopt(struct sock *sk, int level, int optname, char __user *optval, int __user *optlen); |
386 | extern int compat_ip_setsockopt(struct sock *sk, int level, | 386 | extern int compat_ip_setsockopt(struct sock *sk, int level, |
387 | int optname, char __user *optval, int optlen); | 387 | int optname, char __user *optval, unsigned int optlen); |
388 | extern int compat_ip_getsockopt(struct sock *sk, int level, | 388 | extern int compat_ip_getsockopt(struct sock *sk, int level, |
389 | int optname, char __user *optval, int __user *optlen); | 389 | int optname, char __user *optval, int __user *optlen); |
390 | extern int ip_ra_control(struct sock *sk, unsigned char on, void (*destructor)(struct sock *)); | 390 | extern int ip_ra_control(struct sock *sk, unsigned char on, void (*destructor)(struct sock *)); |