Changeset dc6dc11


Ignore:
Timestamp:
11/08/07 12:45:37 (13 years ago)
Author:
Scott Raynel <smr26@…>
Branches:
4.0.1-hotfixes, cachetimestamps, develop, dpdk-ndag, etsilive, getfragoff, help, libtrace4, master, ndag_format, pfring, rc-4.0.1, rc-4.0.2, rc-4.0.3, rc-4.0.4, ringdecrementfix, ringperformance, ringtimestampfixes
Children:
3996329
Parents:
8f18776
Message:

Fix a bug in the previous commit

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • lib/trace.c

    r8f18776 rdc6dc11  
    710710                return -1;
    711711        }
    712         if (packet->buf_control==TRACE_CTRL_PACKET || packet->buf_control==TRACE_CTRL_EXTERNAL) {
     712        if (!(packet->buf_control==TRACE_CTRL_PACKET || packet->buf_control==TRACE_CTRL_EXTERNAL)) {
    713713                trace_set_err(libtrace,TRACE_ERR_BAD_STATE,"Packet passed to trace_read_packet() is invalid\n");
    714714                return -1;
  • libpacketdump/link_15.c

    r4f55f69 rdc6dc11  
    1818void decode(int link_type,char *packet,unsigned len)
    1919{
     20        uint8_t has_fcs = 0;
    2021        uint32_t *ptr;
    2122        uint8_t *p; /* Our current field "cursor" */
     
    6263        if (rtap->it_present & (1 << TRACE_RADIOTAP_FLAGS)) {
    6364                printf(" Radiotap: Flags = 0x%02x\n", *p);
     65                has_fcs = *p & 0x10; /* Determine if the packet has an FCS attached */
    6466                p += sizeof (uint8_t);
    6567                rtap_real_len += sizeof(uint8_t);
     68               
    6669        }
    6770
     
    178181                printf(" Radiotap: WARNING: Header contains un-decoded fields.\n");
    179182
    180         if (len > rtap_len)
    181                 decode_next(packet + rtap_len, len - rtap_len, "link", TRACE_TYPE_80211);
     183        if (len > rtap_len) {
     184                unsigned pktlen = len - rtap_len;
     185                if (has_fcs && pktlen >= 4) pktlen -= 4;
     186                decode_next(packet + rtap_len, pktlen, "link", TRACE_TYPE_80211);
     187                if (has_fcs && pktlen >= 4) {
     188                        uint32_t *fcs;
     189                        fcs = packet + rtap_len + pktlen - 4;
     190                        printf(" 802.11MAC: FCS = 0x%4x\n", *fcs);
     191                }
     192        }
     193               
    182194               
    183195        return;
  • libpacketdump/link_4.c

    rde31abb rdc6dc11  
    201201                if ( len < ( sizeof(ieee80211_ie) + ie->length)) {
    202202                        printf("  [Truncated]\n");
     203                        printf("  len = %u, sizeof_ie = %u, ie->len = %u\n",
     204                                        len, sizeof(ieee80211_ie), ie->length);
    203205                        return;
    204206                }
     
    363365                                printf("  Unknown IE Element ID, 0x%02x\n", ie->id);
    364366                }
    365                 len -= sizeof(ieee80211_ie) + ie->length;
     367                len -= (sizeof(ieee80211_ie) + ie->length);
    366368                pkt = ((char *)pkt + sizeof(ieee80211_ie) + ie->length);
    367369        }
Note: See TracChangeset for help on using the changeset viewer.