Changeset 7e8a25a


Ignore:
Timestamp:
09/30/10 17:12:04 (10 years ago)
Author:
Shane Alcock <salcock@…>
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:
3038cd2
Parents:
15749d5
Message:
  • Fixed payload length errors caused by v6 in v4 and truncated TCP headers
File:
1 edited

Legend:

Unmodified
Added
Removed
  • lib/protocols_transport.c

    r15749d5 r7e8a25a  
    6767        libtrace_tcp_t *tcp;
    6868        size_t len = 0;
     69
     70       
    6971
    7072        layer = trace_get_layer3(packet, &ethertype, &rem);
     
    7880                                return 0;
    7981                        len = ntohs(ip->ip_len) - (4 * ip->ip_hl);
     82               
     83                        /* Deal with v6 within v4 */
     84                        if (ip->ip_p == TRACE_IPPROTO_IPV6)
     85                                len -= sizeof(libtrace_ip6_t);
     86                       
    8087                        break;
    8188                case TRACE_ETHERTYPE_IPV6:
     
    95102        switch(proto) {
    96103                case TRACE_IPPROTO_TCP:
     104                        if (rem < sizeof(libtrace_tcp_t))
     105                                return 0;
    97106                        tcp = (libtrace_tcp_t *)layer;
    98107                        len -= (4 * tcp->doff);
     
    104113                        len -= sizeof(libtrace_icmp_t);
    105114                        break;
     115               
    106116                default:
    107117                        return 0;
Note: See TracChangeset for help on using the changeset viewer.