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 /net/decnet | |
| 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 'net/decnet')
| -rw-r--r-- | net/decnet/af_decnet.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/net/decnet/af_decnet.c b/net/decnet/af_decnet.c index 77d40289653..7a58c87baf1 100644 --- a/net/decnet/af_decnet.c +++ b/net/decnet/af_decnet.c | |||
| @@ -157,7 +157,7 @@ static struct hlist_head dn_sk_hash[DN_SK_HASH_SIZE]; | |||
| 157 | static struct hlist_head dn_wild_sk; | 157 | static struct hlist_head dn_wild_sk; |
| 158 | static atomic_t decnet_memory_allocated; | 158 | static atomic_t decnet_memory_allocated; |
| 159 | 159 | ||
| 160 | static int __dn_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int optlen, int flags); | 160 | static int __dn_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen, int flags); |
| 161 | static int __dn_getsockopt(struct socket *sock, int level, int optname, char __user *optval, int __user *optlen, int flags); | 161 | static int __dn_getsockopt(struct socket *sock, int level, int optname, char __user *optval, int __user *optlen, int flags); |
| 162 | 162 | ||
| 163 | static struct hlist_head *dn_find_list(struct sock *sk) | 163 | static struct hlist_head *dn_find_list(struct sock *sk) |
| @@ -1325,7 +1325,7 @@ out: | |||
| 1325 | return err; | 1325 | return err; |
| 1326 | } | 1326 | } |
| 1327 | 1327 | ||
| 1328 | static int dn_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int optlen) | 1328 | static int dn_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen) |
| 1329 | { | 1329 | { |
| 1330 | struct sock *sk = sock->sk; | 1330 | struct sock *sk = sock->sk; |
| 1331 | int err; | 1331 | int err; |
| @@ -1337,7 +1337,7 @@ static int dn_setsockopt(struct socket *sock, int level, int optname, char __use | |||
| 1337 | return err; | 1337 | return err; |
| 1338 | } | 1338 | } |
| 1339 | 1339 | ||
| 1340 | static int __dn_setsockopt(struct socket *sock, int level,int optname, char __user *optval, int optlen, int flags) | 1340 | static int __dn_setsockopt(struct socket *sock, int level,int optname, char __user *optval, unsigned int optlen, int flags) |
| 1341 | { | 1341 | { |
| 1342 | struct sock *sk = sock->sk; | 1342 | struct sock *sk = sock->sk; |
| 1343 | struct dn_scp *scp = DN_SK(sk); | 1343 | struct dn_scp *scp = DN_SK(sk); |
