summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorLance Richardson <lrichard@redhat.com>2016-08-23 11:40:52 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-09-24 10:09:25 +0200
commite7a47a811157a6034212e1fb7228a51ce6e9efda (patch)
tree8b4118762d9fbd8ad482b9d2d6e47d0d6e8a49a2 /net
parent4928a5c879ea7f59576edadf5ae66978d12eb771 (diff)
downloadlwn-e7a47a811157a6034212e1fb7228a51ce6e9efda.tar.gz
lwn-e7a47a811157a6034212e1fb7228a51ce6e9efda.zip
sctp: fix overrun in sctp_diag_dump_one()
[ Upstream commit 232cb53a45965f8789fbf0a9a1962f8c67ab1a3c ] The function sctp_diag_dump_one() currently performs a memcpy() of 64 bytes from a 16 byte field into another 16 byte field. Fix by using correct size, use sizeof to obtain correct size instead of using a hard-coded constant. Fixes: 8f840e47f190 ("sctp: add the sctp_diag.c file") Signed-off-by: Lance Richardson <lrichard@redhat.com> Reviewed-by: Xin Long <lucien.xin@gmail.com> Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net')
-rw-r--r--net/sctp/sctp_diag.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/net/sctp/sctp_diag.c b/net/sctp/sctp_diag.c
index f69edcf219e5..10bae2201c6f 100644
--- a/net/sctp/sctp_diag.c
+++ b/net/sctp/sctp_diag.c
@@ -418,11 +418,13 @@ static int sctp_diag_dump_one(struct sk_buff *in_skb,
paddr.v4.sin_family = AF_INET;
} else {
laddr.v6.sin6_port = req->id.idiag_sport;
- memcpy(&laddr.v6.sin6_addr, req->id.idiag_src, 64);
+ memcpy(&laddr.v6.sin6_addr, req->id.idiag_src,
+ sizeof(laddr.v6.sin6_addr));
laddr.v6.sin6_family = AF_INET6;
paddr.v6.sin6_port = req->id.idiag_dport;
- memcpy(&paddr.v6.sin6_addr, req->id.idiag_dst, 64);
+ memcpy(&paddr.v6.sin6_addr, req->id.idiag_dst,
+ sizeof(paddr.v6.sin6_addr));
paddr.v6.sin6_family = AF_INET6;
}