From Allan M. Madsen via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=5446 :
authormorriss <morriss@f5534014-38df-0310-8fa8-9805f1628bb7>
Fri, 3 Dec 2010 23:44:35 +0000 (23:44 +0000)
committermorriss <morriss@f5534014-38df-0310-8fa8-9805f1628bb7>
Fri, 3 Dec 2010 23:44:35 +0000 (23:44 +0000)
Bluetooth ACL packets are not defragmented when the packet boundary flags is set
to 'flushable first fragment'.

git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@35117 f5534014-38df-0310-8fa8-9805f1628bb7

epan/dissectors/packet-bthci_acl.c

index 2634faf4fdf397c188dbaf32f3ea1e1959f2d133..983d7ce4e0b5f75e796a199271707451d18ff064 100644 (file)
@@ -139,7 +139,8 @@ dissect_btacl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
        case 0x01:      /* Continuation fragment */
                fragmented = TRUE;
                break;
-       case 0x02:      /* Start fragment */
+       case 0x00:      /* First fragment/packet, non-auto flushable */
+       case 0x02:      /* First fragment/packet, auto flushable */
                l2cap_length=tvb_get_letohs(tvb, offset);
                fragmented=((l2cap_length+4)!=length);
                break;
@@ -150,7 +151,7 @@ dissect_btacl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 
 
        if((!fragmented)
-       || ((!acl_reassembly)&&(pb_flag==0x02)) ){
+       || ((!acl_reassembly)&& !(pb_flag&0x01)) ){
                /* call L2CAP dissector for PDUs that are not fragmented
                 * also for the first fragment if reassembly is disabled
                 */
@@ -166,7 +167,7 @@ dissect_btacl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                multi_fragment_pdu_t *mfp=NULL;
                gint len;
 
-               if(pb_flag==0x02){ /* first fragment */
+               if(!(pb_flag&0x01)){ /* first fragment */
                        if(!pinfo->fd->flags.visited){
                                mfp=se_alloc(sizeof(multi_fragment_pdu_t));
                                mfp->first_frame=pinfo->fd->num;