diff options
| author | Ivan Skytte Jorgensen <isj-sctp@i1.dk> | 2005-10-28 15:33:24 -0700 | 
|---|---|---|
| committer | Sridhar Samudrala <sri@us.ibm.com> | 2005-10-28 15:33:24 -0700 | 
| commit | a1ab3582699def352dab1355adcadd3d47f79f0f (patch) | |
| tree | 48faf33fae1b82f15df770e6340f58a858393e43 | |
| parent | eaa5c54dbec70e2a93d6ed412bb589bbf9c90a17 (diff) | |
[SCTP] Fix SCTP_SETADAPTION sockopt to use the correct structure.
Signed-off-by: Ivan Skytte Jorgensen <isj-sctp@i1.dk>
Signed-off-by: Sridhar Samudrala <sri@us.ibm.com>
| -rw-r--r-- | net/sctp/socket.c | 20 | 
1 files changed, 9 insertions, 11 deletions
| diff --git a/net/sctp/socket.c b/net/sctp/socket.c index 170045b6ee98..c66c161908c0 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c @@ -2384,14 +2384,14 @@ static int sctp_setsockopt_peer_primary_addr(struct sock *sk, char __user *optva  static int sctp_setsockopt_adaption_layer(struct sock *sk, char __user *optval,  					  int optlen)  { -	__u32 val; +	struct sctp_setadaption adaption; -	if (optlen < sizeof(__u32)) +	if (optlen != sizeof(struct sctp_setadaption))  		return -EINVAL; -	if (copy_from_user(&val, optval, sizeof(__u32))) +	if (copy_from_user(&adaption, optval, optlen))   		return -EFAULT; -	sctp_sk(sk)->adaption_ind = val; +	sctp_sk(sk)->adaption_ind = adaption.ssb_adaption_ind;  	return 0;  } @@ -3672,17 +3672,15 @@ static int sctp_getsockopt_primary_addr(struct sock *sk, int len,  static int sctp_getsockopt_adaption_layer(struct sock *sk, int len,  				  char __user *optval, int __user *optlen)  { -	__u32 val; +	struct sctp_setadaption adaption; -	if (len < sizeof(__u32)) +	if (len != sizeof(struct sctp_setadaption))  		return -EINVAL; -	len = sizeof(__u32); -	val = sctp_sk(sk)->adaption_ind; -	if (put_user(len, optlen)) -		return -EFAULT; -	if (copy_to_user(optval, &val, len)) +	adaption.ssb_adaption_ind = sctp_sk(sk)->adaption_ind; +	if (copy_to_user(optval, &adaption, len))  		return -EFAULT; +  	return 0;  } | 
