Bluetooth: Check for valid bdaddr in add_remote_oob_data
authorJohan Hedberg <johan.hedberg@intel.com>
Fri, 23 Jan 2015 08:10:38 +0000 (10:10 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Fri, 23 Jan 2015 17:59:30 +0000 (18:59 +0100)
Before doing any other verifications, the add_remote_oob_data function
should first check that the given address is valid. This patch adds such
a missing check to the beginning of the function.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/bluetooth/mgmt.c

index 41e30055bae879c148ff8488622c5abf30c8d03c..2c0de3e4e79a1f1f6eaa01850ca5b6767a4721de 100644 (file)
@@ -3633,10 +3633,16 @@ unlock:
 static int add_remote_oob_data(struct sock *sk, struct hci_dev *hdev,
                               void *data, u16 len)
 {
+       struct mgmt_addr_info *addr = data;
        int err;
 
        BT_DBG("%s ", hdev->name);
 
+       if (!bdaddr_type_is_valid(addr->type))
+               return cmd_complete(sk, hdev->id, MGMT_OP_ADD_REMOTE_OOB_DATA,
+                                   MGMT_STATUS_INVALID_PARAMS, addr,
+                                   sizeof(*addr));
+
        hci_dev_lock(hdev);
 
        if (len == MGMT_ADD_REMOTE_OOB_DATA_SIZE) {