Changeset 385678b


Ignore:
Timestamp:
01/14/19 17:36:22 (21 months ago)
Author:
Shane Alcock <salcock@…>
Branches:
develop
Children:
063d5dd
Parents:
2f9b609
Message:

Don't try to guess layer2 payload type when no payload exists.

Fixes #91.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lib/protocols_l2.c

    r2f9b609 r385678b  
    588588                return NULL;
    589589        }
    590        
     590
     591        if (link == NULL) {
     592                return NULL;
     593        }
     594
    591595        switch(linktype) {
    592596                /* Packet Metadata headers, not layer2 headers */
     
    618622                        return trace_get_payload_from_ethernet(link,ethertype,remaining);
    619623                case TRACE_TYPE_NONE:
     624                        if (*remaining == 0) {
     625                                return NULL;
     626                        }
     627
    620628                        if ((*(char*)link&0xF0) == 0x40)
    621629                                *ethertype=TRACE_ETHERTYPE_IP;   /* IPv4 */
    622630                        else if ((*(char*)link&0xF0) == 0x60)
    623631                                *ethertype=TRACE_ETHERTYPE_IPV6; /* IPv6 */
     632                        else
     633                                return NULL;            /* No idea */
    624634                        return link; /* I love the simplicity */
    625635                case TRACE_TYPE_PPP:
     
    646656
    647657                case TRACE_TYPE_OPENBSD_LOOP:
     658                        if (*remaining <= 4) {
     659                                return NULL;
     660                        }
    648661                        link = link + 4; /* Loopback header is 4 bytes */
    649662                        if ((*(char*)link&0xF0) == 0x40)
     
    651664                        else if ((*(char*)link&0xF0) == 0x60)
    652665                                *ethertype=TRACE_ETHERTYPE_IPV6; /* IPv6 */
     666                        else
     667                                return NULL;
    653668                        return link; /* I love the simplicity */
    654669               
Note: See TracChangeset for help on using the changeset viewer.