debug-validation: fix packet check

On fragments and invalid packets we can have p->proto set, while the
matching protocol header pointer is null.
pull/836/merge
Victor Julien 11 years ago
parent 01b80e2d8f
commit 43aa74d711

@ -73,16 +73,18 @@
if ((p)->flow != NULL) { \
DEBUG_VALIDATE_FLOW((p)->flow); \
} \
if ((p)->proto == IPPROTO_TCP) { \
BUG_ON((p)->tcph == NULL); \
} else if ((p)->proto == IPPROTO_UDP) { \
BUG_ON((p)->udph == NULL); \
} else if ((p)->proto == IPPROTO_ICMP) { \
BUG_ON((p)->icmpv4h == NULL); \
} else if ((p)->proto == IPPROTO_SCTP) { \
BUG_ON((p)->sctph == NULL); \
} else if ((p)->proto == IPPROTO_ICMPV6) { \
BUG_ON((p)->icmpv6h == NULL); \
if (!((p)->flags & (PKT_IS_FRAGMENT|PKT_IS_INVALID))) { \
if ((p)->proto == IPPROTO_TCP) { \
BUG_ON((p)->tcph == NULL); \
} else if ((p)->proto == IPPROTO_UDP) { \
BUG_ON((p)->udph == NULL); \
} else if ((p)->proto == IPPROTO_ICMP) { \
BUG_ON((p)->icmpv4h == NULL); \
} else if ((p)->proto == IPPROTO_SCTP) { \
BUG_ON((p)->sctph == NULL); \
} else if ((p)->proto == IPPROTO_ICMPV6) { \
BUG_ON((p)->icmpv6h == NULL); \
} \
} \
if ((p)->payload_len > 0) { \
BUG_ON((p)->payload == NULL); \

Loading…
Cancel
Save