summaryrefslogtreecommitdiff
path: root/net/bluetooth
diff options
context:
space:
mode:
authorMathias Krause <minipli@googlemail.com>2012-08-15 11:31:51 +0000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-10-02 10:29:36 -0700
commitdbcba7a54a0327f0ef6d6a3ec53b67d0969109b6 (patch)
tree802a5ba716e47fa4c7364c0681f48a0a3c7e124b /net/bluetooth
parent8717cd3d63233ee5591bf8e8d6e5960a1f6252b1 (diff)
downloadlinux-3.10-dbcba7a54a0327f0ef6d6a3ec53b67d0969109b6.tar.gz
linux-3.10-dbcba7a54a0327f0ef6d6a3ec53b67d0969109b6.tar.bz2
linux-3.10-dbcba7a54a0327f0ef6d6a3ec53b67d0969109b6.zip
Bluetooth: L2CAP - Fix info leak via getsockname()
[ Upstream commit 792039c73cf176c8e39a6e8beef2c94ff46522ed ] The L2CAP code fails to initialize the l2_bdaddr_type member of struct sockaddr_l2 and the padding byte added for alignment. It that for leaks two bytes kernel stack via the getsockname() syscall. Add an explicit memset(0) before filling the structure to avoid the info leak. Signed-off-by: Mathias Krause <minipli@googlemail.com> Cc: Marcel Holtmann <marcel@holtmann.org> Cc: Gustavo Padovan <gustavo@padovan.org> Cc: Johan Hedberg <johan.hedberg@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net/bluetooth')
-rw-r--r--net/bluetooth/l2cap_sock.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c
index 04e7c172d49..615b26e0650 100644
--- a/net/bluetooth/l2cap_sock.c
+++ b/net/bluetooth/l2cap_sock.c
@@ -242,6 +242,7 @@ static int l2cap_sock_getname(struct socket *sock, struct sockaddr *addr, int *l
BT_DBG("sock %p, sk %p", sock, sk);
+ memset(la, 0, sizeof(struct sockaddr_l2));
addr->sa_family = AF_BLUETOOTH;
*len = sizeof(struct sockaddr_l2);