Skip to content

Commit

Permalink
sctp: not allow to set asoc prsctp_enable by sockopt
Browse files Browse the repository at this point in the history
As rfc7496#section4.5 says about SCTP_PR_SUPPORTED:

   This socket option allows the enabling or disabling of the
   negotiation of PR-SCTP support for future associations.  For existing
   associations, it allows one to query whether or not PR-SCTP support
   was negotiated on a particular association.

It means only sctp sock's prsctp_enable can be set.

Note that for the limitation of SCTP_{CURRENT|ALL}_ASSOC, we will
add it when introducing SCTP_{FUTURE|CURRENT|ALL}_ASSOC for linux
sctp in another patchset.

v1->v2:
  - drop the params.assoc_id check as Neil suggested.

Fixes: 28aa4c2 ("sctp: add SCTP_PR_SUPPORTED on sctp sockopt")
Reported-by: Ying Xu <yinxu@redhat.com>
Signed-off-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Xin Long authored and David S. Miller committed Nov 19, 2018
1 parent 02968cc commit cc3ccf2
Showing 1 changed file with 5 additions and 21 deletions.
26 changes: 5 additions & 21 deletions net/sctp/socket.c
Original file line number Diff line number Diff line change
Expand Up @@ -3940,32 +3940,16 @@ static int sctp_setsockopt_pr_supported(struct sock *sk,
unsigned int optlen)
{
struct sctp_assoc_value params;
struct sctp_association *asoc;
int retval = -EINVAL;

if (optlen != sizeof(params))
goto out;

if (copy_from_user(&params, optval, optlen)) {
retval = -EFAULT;
goto out;
}

asoc = sctp_id2assoc(sk, params.assoc_id);
if (asoc) {
asoc->prsctp_enable = !!params.assoc_value;
} else if (!params.assoc_id) {
struct sctp_sock *sp = sctp_sk(sk);
return -EINVAL;

sp->ep->prsctp_enable = !!params.assoc_value;
} else {
goto out;
}
if (copy_from_user(&params, optval, optlen))
return -EFAULT;

retval = 0;
sctp_sk(sk)->ep->prsctp_enable = !!params.assoc_value;

out:
return retval;
return 0;
}

static int sctp_setsockopt_default_prinfo(struct sock *sk,
Expand Down

0 comments on commit cc3ccf2

Please sign in to comment.