monitor: Fix decoding Read Local Supported Codec Capabilities
authorKiran K <kiran.k@intel.com>
Sun, 7 Mar 2021 09:18:45 +0000 (14:48 +0530)
committerAyush Garg <ayush.garg@samsung.com>
Fri, 11 Mar 2022 13:38:34 +0000 (19:08 +0530)
Codec capabilities wern't properly decoded due to wrong offset

< HCI Command: Read Local Supported Codec Capabilities (0x04|0x000e) plen 7
        Codec: A-law log (0x01)
        Logical Transport Type: 0x01
          Codec supported over BR/EDR ACL
        Direction: Input (Host to Controller) (0x00)
> HCI Event: Command Complete (0x0e) plen 18
      Read Local Supported Codec Capabilities (0x04|0x000e) ncmd 1
        Status: Success (0x00)
        Number of codec capabilities: 3
         Capabilities #0:
        aa bb cc dd                                      ....
         Capabilities #1:
        11 22 33 44 55                                   ."3DU
         Capabilities #2:
        ff                                               .

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
monitor/packet.c

index 9106c03..4001612 100755 (executable)
@@ -6026,23 +6026,23 @@ static void read_local_codec_caps_rsp(const void *data, uint8_t size)
        print_status(rsp->status);
        print_field("Number of codec capabilities: %d", rsp->num);
 
-       data += sizeof(rsp);
-       size -= sizeof(rsp);
+       data += sizeof(*rsp);
+       size -= sizeof(*rsp);
 
        for (i = 0; i < rsp->num; i++) {
                const struct bt_hci_codec_caps *caps = data;
 
-               if (size < sizeof(caps)) {
+               if (size < sizeof(*caps)) {
                        print_field("Invalid capabilities: %u < %zu",
-                                               size, sizeof(caps));
+                                               size, sizeof(*caps));
                        return;
                }
 
                print_field(" Capabilities #%u:", i);
                packet_hexdump(caps->data, caps->len);
 
-               data += caps->len;
-               size -= caps->len;
+               data += 1 + caps->len;
+               size -= 1 + caps->len;
        }
 }