Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a1ab3582 authored by Ivan Skytte Jorgensen's avatar Ivan Skytte Jorgensen Committed by Sridhar Samudrala
Browse files

[SCTP] Fix SCTP_SETADAPTION sockopt to use the correct structure.

parent eaa5c54d
Loading
Loading
Loading
Loading
+9 −11
Original line number Diff line number Diff line
@@ -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;
}