Changeset 35782f6


Ignore:
Timestamp:
05/29/08 11:44:54 (13 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:
3a87f4f
Parents:
ae8ec56
Message:
  • Updated all get_payload_from_X functions to set remaining to zero if they are returning NULL rather than have remaining be "undefined" upon return
Location:
lib
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • lib/protocols_l2.c

    rae8ec56 r35782f6  
    1515
    1616        if (remaining) {
    17                 if (*remaining < sizeof(*eth))
    18                         return NULL;
     17                if (*remaining <= sizeof(*eth)) {
     18                        *remaining = 0;
     19                        return NULL;
     20                }
    1921                *remaining-=sizeof(*eth);
    2022        }
     
    3739
    3840                if (remaining) {
    39                         if (*remaining <= sizeof(libtrace_8021q_t))
     41                        if (*remaining <= sizeof(libtrace_8021q_t)) {
     42                                *remaining = 0;
    4043                                return NULL;
     44                        }
    4145
    4246                        *remaining=*remaining-sizeof(libtrace_8021q_t);
     
    101105
    102106        if (remaining) {
    103                 if (*remaining <= sizeof(libtrace_llcsnap_t))
    104                         return NULL;
     107                if (*remaining <= sizeof(libtrace_llcsnap_t)) {
     108                        *remaining = 0;
     109                        return NULL;
     110                }
    105111                *remaining-=(sizeof(libtrace_llcsnap_t));
    106112        }
     
    120126        int8_t extra = 0; /* how many QoS bytes to skip */
    121127       
    122         if (remaining && *remaining <= sizeof(libtrace_80211_t))
    123                 return NULL;
     128        if (remaining && *remaining <= sizeof(libtrace_80211_t)) {
     129                *remaining = 0;
     130                return NULL;
     131        }
    124132
    125133        wifi=(libtrace_80211_t*)link;
     
    139147                extra += 2;
    140148
    141         if (remaining && *remaining < sizeof(*eth))
    142                 return NULL;
     149        if (remaining && *remaining < sizeof(*eth)) {
     150                *remaining = 0;
     151                return NULL;
     152        }
    143153
    144154        eth=(uint16_t *)((char*)wifi+sizeof(*wifi)+extra);
     
    162172
    163173        if (remaining) {
    164                 if (*remaining <= sizeof(libtrace_ppp_t))
    165                         return NULL;
     174                if (*remaining <= sizeof(libtrace_ppp_t)) {
     175                        *remaining = 0;
     176                        return NULL;
     177                }
    166178                *remaining-=sizeof(libtrace_ppp_t);
    167179        }
     
    189201
    190202        if (remaining) {
    191                 if (*remaining <= sizeof(libtrace_chdlc_t))
    192                         return NULL;
     203                if (*remaining <= sizeof(libtrace_chdlc_t)) {
     204                        *remaining = 0;
     205                        return NULL;
     206                }
    193207                *remaining-=sizeof(libtrace_chdlc_t);
    194208        }
     
    257271{
    258272        libtrace_atm_capture_cell_t *cell;
    259         if (remaining && *remaining<=sizeof(libtrace_atm_capture_cell_t))
    260                 return NULL;
     273        if (remaining && *remaining<=sizeof(libtrace_atm_capture_cell_t)) {
     274                *remaining = 0;
     275                return NULL;
     276        }
    261277        cell=(libtrace_atm_capture_cell_t*)link;
    262278
  • lib/protocols_l3.c

    ra78665c r35782f6  
    1717
    1818        /* Make sure we have at least a base IPv4 header */
    19         if (remaining < sizeof(libtrace_ip_t))
     19        if (remaining < sizeof(libtrace_ip_t)) 
    2020                return NULL;
    2121       
     
    5050
    5151        if ((ntohs(ipptr->ip_off) & SW_IP_OFFMASK) != 0) {
     52                *remaining = 0;         /* Not sure if this is right but
     53                                           consistency is a good thing, right?
     54                                         */
    5255                return NULL;
    5356        }
     
    5558        if (remaining) {
    5659                if (*remaining<=(ipptr->ip_hl*4U)) {
     60                        *remaining = 0;
    5761                        return NULL;
    5862                }
     
    7478
    7579        if (remaining) {
    76                 if (*remaining<sizeof(libtrace_ip6_t))
    77                         return NULL;
     80                if (*remaining<sizeof(libtrace_ip6_t)) {
     81                        *remaining = 0;
     82                        return NULL;
     83                }
    7884                *remaining-=sizeof(libtrace_ip6_t);
    7985        }
     
    94100                                                if (*remaining < len) {
    95101                                                        /* Snap too short */
     102                                                        *remaining = 0;
    96103                                                        return NULL;
    97104                                                }
  • lib/protocols_pktmeta.c

    r3ac4bf7 r35782f6  
    2626
    2727        if (remaining) {
    28                 if (*remaining <= sizeof(*sll))
    29                         return NULL;
     28                if (*remaining <= sizeof(*sll)) {
     29                        *remaining = 0;
     30                        return NULL;
     31                }
    3032                *remaining-=sizeof(*sll);
    3133        }
     
    4345        libtrace_pflog_header_t *pflog = (libtrace_pflog_header_t*)link;
    4446        if (remaining) {
    45                 if (*remaining<=sizeof(*pflog))
    46                         return NULL;
     47                if (*remaining<=sizeof(*pflog)) {
     48                        *remaining = 0;
     49                        return NULL;
     50                }
    4751                *remaining-=sizeof(*pflog);
    4852        }
     
    5862{
    5963        if (remaining) {
    60                 if (*remaining<=144)
    61                         return NULL;
     64                if (*remaining<=144) {
     65                        *remaining = 0;
     66                        return NULL;
     67                }
    6268                *remaining-=144;
    6369        }
     
    7581        uint16_t rtaplen = bswap_le_to_host16(rtap->it_len);
    7682        if (remaining) {
    77                 if (*remaining <= rtaplen)
    78                         return NULL;
     83                if (*remaining <= rtaplen) {
     84                        *remaining = 0;
     85                        return NULL;
     86                }
    7987                *remaining -= rtaplen;
    8088        }
  • lib/protocols_transport.c

    r411666a r35782f6  
    118118{
    119119        if (remaining) {
    120                 if (*remaining <= sizeof(libtrace_udp_t))
     120                if (*remaining <= sizeof(libtrace_udp_t)) {
     121                        *remaining = 0;
    121122                        return NULL;
     123                }
    122124                *remaining-=sizeof(libtrace_udp_t);
    123125        }
     
    129131        unsigned int dlen = tcp->doff*4;
    130132        if (remaining) {
    131                 if (*remaining <= dlen)
     133                if (*remaining <= dlen) {
     134                        *remaining = 0;
    132135                        return NULL;
     136                }
    133137                *remaining-=dlen;
    134138        }
     
    139143{
    140144        if (remaining) {
    141                 if (*remaining <= sizeof(libtrace_icmp_t))
     145                if (*remaining <= sizeof(libtrace_icmp_t)) {
     146                        *remaining = 0;
    142147                        return NULL;
     148                }
    143149                *remaining-=sizeof(libtrace_icmp_t);
    144150        }
Note: See TracChangeset for help on using the changeset viewer.