diff options
author | Xin Long <lucien.xin@gmail.com> | 2019-08-19 10:02:45 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-08-19 21:27:28 -0400 |
commit | a2eeacc830438d738d21230325662fe5c22c3bf0 (patch) | |
tree | ccf3b2251445eb276d196c43164bda2df28f403b | |
parent | bb2ded26028be00204dbe2153f98fbd1902a2187 (diff) |
sctp: check asoc peer.asconf_capable before processing asconf
asconf chunks should be dropped when the asoc doesn't support
asconf feature.
Signed-off-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/sctp/sm_statefuns.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c index 2c244b29a199..0c21c52fc408 100644 --- a/net/sctp/sm_statefuns.c +++ b/net/sctp/sm_statefuns.c | |||
@@ -3721,7 +3721,8 @@ enum sctp_disposition sctp_sf_do_asconf(struct net *net, | |||
3721 | * is received unauthenticated it MUST be silently discarded as | 3721 | * is received unauthenticated it MUST be silently discarded as |
3722 | * described in [I-D.ietf-tsvwg-sctp-auth]. | 3722 | * described in [I-D.ietf-tsvwg-sctp-auth]. |
3723 | */ | 3723 | */ |
3724 | if (!net->sctp.addip_noauth && !chunk->auth) | 3724 | if (!asoc->peer.asconf_capable || |
3725 | (!net->sctp.addip_noauth && !chunk->auth)) | ||
3725 | return sctp_sf_discard_chunk(net, ep, asoc, type, arg, | 3726 | return sctp_sf_discard_chunk(net, ep, asoc, type, arg, |
3726 | commands); | 3727 | commands); |
3727 | 3728 | ||
@@ -3863,7 +3864,8 @@ enum sctp_disposition sctp_sf_do_asconf_ack(struct net *net, | |||
3863 | * is received unauthenticated it MUST be silently discarded as | 3864 | * is received unauthenticated it MUST be silently discarded as |
3864 | * described in [I-D.ietf-tsvwg-sctp-auth]. | 3865 | * described in [I-D.ietf-tsvwg-sctp-auth]. |
3865 | */ | 3866 | */ |
3866 | if (!net->sctp.addip_noauth && !asconf_ack->auth) | 3867 | if (!asoc->peer.asconf_capable || |
3868 | (!net->sctp.addip_noauth && !asconf_ack->auth)) | ||
3867 | return sctp_sf_discard_chunk(net, ep, asoc, type, arg, | 3869 | return sctp_sf_discard_chunk(net, ep, asoc, type, arg, |
3868 | commands); | 3870 | commands); |
3869 | 3871 | ||