Bluetooth: hci_event: Use struct_size() helper
authorGustavo A. R. Silva <gustavo@embeddedor.com>
Fri, 8 Feb 2019 00:40:33 +0000 (18:40 -0600)
committerMarcel Holtmann <marcel@holtmann.org>
Mon, 18 Feb 2019 13:00:09 +0000 (14:00 +0100)
Make use of the struct_size() helper instead of an open-coded version
in order to avoid any potential type mistakes, in particular in the
context in which this code is being used.

So, change the following form:

sizeof(*ev) + ev->num_hndl * sizeof(struct hci_comp_pkts_info)

 to :

struct_size(ev, handles, ev->num_hndl)

This code was detected with the help of Coccinelle.

Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/bluetooth/hci_event.c

index ac2826c..609fd68 100644 (file)
@@ -3556,8 +3556,8 @@ static void hci_num_comp_pkts_evt(struct hci_dev *hdev, struct sk_buff *skb)
                return;
        }
 
-       if (skb->len < sizeof(*ev) || skb->len < sizeof(*ev) +
-           ev->num_hndl * sizeof(struct hci_comp_pkts_info)) {
+       if (skb->len < sizeof(*ev) ||
+           skb->len < struct_size(ev, handles, ev->num_hndl)) {
                BT_DBG("%s bad parameters", hdev->name);
                return;
        }
@@ -3644,8 +3644,8 @@ static void hci_num_comp_blocks_evt(struct hci_dev *hdev, struct sk_buff *skb)
                return;
        }
 
-       if (skb->len < sizeof(*ev) || skb->len < sizeof(*ev) +
-           ev->num_hndl * sizeof(struct hci_comp_blocks_info)) {
+       if (skb->len < sizeof(*ev) ||
+           skb->len < struct_size(ev, handles, ev->num_hndl)) {
                BT_DBG("%s bad parameters", hdev->name);
                return;
        }