| From ed5a377d87dc4c87fb3e1f7f698cba38cd893103 Mon Sep 17 00:00:00 2001 |
| From: lucien <lucien.xin@gmail.com> |
| Date: Thu, 12 Nov 2015 13:07:07 +0800 |
| Subject: sctp: translate host order to network order when setting a hmacid |
| |
| commit ed5a377d87dc4c87fb3e1f7f698cba38cd893103 upstream. |
| |
| now sctp auth cannot work well when setting a hmacid manually, which |
| is caused by that we didn't use the network order for hmacid, so fix |
| it by adding the transformation in sctp_auth_ep_set_hmacs. |
| |
| even we set hmacid with the network order in userspace, it still |
| can't work, because of this condition in sctp_auth_ep_set_hmacs(): |
| |
| if (id > SCTP_AUTH_HMAC_ID_MAX) |
| return -EOPNOTSUPP; |
| |
| so this wasn't working before and thus it won't break compatibility. |
| |
| Fixes: 65b07e5d0d09 ("[SCTP]: API updates to suport SCTP-AUTH extensions.") |
| Signed-off-by: Xin Long <lucien.xin@gmail.com> |
| Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> |
| Acked-by: Neil Horman <nhorman@tuxdriver.com> |
| Acked-by: Vlad Yasevich <vyasevich@gmail.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Zefan Li <lizefan@huawei.com> |
| --- |
| net/sctp/auth.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/net/sctp/auth.c |
| +++ b/net/sctp/auth.c |
| @@ -804,8 +804,8 @@ int sctp_auth_ep_set_hmacs(struct sctp_e |
| if (!has_sha1) |
| return -EINVAL; |
| |
| - memcpy(ep->auth_hmacs_list->hmac_ids, &hmacs->shmac_idents[0], |
| - hmacs->shmac_num_idents * sizeof(__u16)); |
| + for (i = 0; i < hmacs->shmac_num_idents; i++) |
| + ep->auth_hmacs_list->hmac_ids[i] = htons(hmacs->shmac_idents[i]); |
| ep->auth_hmacs_list->param_hdr.length = htons(sizeof(sctp_paramhdr_t) + |
| hmacs->shmac_num_idents * sizeof(__u16)); |
| return 0; |