From 851facbf3324be6f597ad1dc50bfc1749407c97d Mon Sep 17 00:00:00 2001 From: Al Viro Date: Fri, 19 Dec 2014 06:20:58 +0000 Subject: [PATCH] Bluetooth: cmtp: cmtp_add_connection() should verify that it's dealing with l2cap socket ... rather than relying on ciptool(8) never passing it anything else. Give it e.g. an AF_UNIX connected socket (from socketpair(2)) and it'll oops, trying to evaluate &l2cap_pi(sock->sk)->chan->dst... Bug: 33982955 Signed-off-by: Al Viro Signed-off-by: Marcel Holtmann Change-Id: I078260c1b5be6a96b54c265da0236bf84842e450 Signed-off-by: Francisco Franco --- net/bluetooth/cmtp/core.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/bluetooth/cmtp/core.c b/net/bluetooth/cmtp/core.c index bff02adbc90d..bc9b80a3f02e 100644 --- a/net/bluetooth/cmtp/core.c +++ b/net/bluetooth/cmtp/core.c @@ -335,6 +335,9 @@ int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock) BT_DBG(""); + if (!l2cap_is_socket(sock)) + return -EBADFD; + session = kzalloc(sizeof(struct cmtp_session), GFP_KERNEL); if (!session) return -ENOMEM;