diff --git a/src/decode-vxlan.c b/src/decode-vxlan.c index e08a4873c0..6a7322993e 100644 --- a/src/decode-vxlan.c +++ b/src/decode-vxlan.c @@ -126,10 +126,7 @@ void DecodeVXLANConfig(void) int DecodeVXLAN(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p, const uint8_t *pkt, uint32_t len) { - EthernetHdr *ethh = (EthernetHdr *)(pkt + VXLAN_HEADER_LEN); - - uint16_t eth_type; - int decode_tunnel_proto = DECODE_TUNNEL_UNSET; + DEBUG_VALIDATE_BUG_ON(pkt == NULL); /* Initial packet validation */ if (unlikely(!g_vxlan_enabled)) @@ -153,8 +150,11 @@ int DecodeVXLAN(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p, /* Increment stats counter for VXLAN packets */ StatsIncr(tv, dtv->counter_vxlan); + EthernetHdr *ethh = (EthernetHdr *)(pkt + VXLAN_HEADER_LEN); + int decode_tunnel_proto = DECODE_TUNNEL_UNSET; + /* Look at encapsulated Ethernet frame to get next protocol */ - eth_type = SCNtohs(ethh->eth_type); + uint16_t eth_type = SCNtohs(ethh->eth_type); SCLogDebug("VXLAN ethertype 0x%04x", eth_type); switch (eth_type) {