Add a sanity check: packet length need to be >= capture length
(Like a sanity check in print.c, pretty_print_packet() function)
Remove a now useless test:
Because packet length (length) >= capture length (caplen), when
caplen >= ETHER_HDRLEN + switch_tag_len, length cannot
be < ETHER_HDRLEN + switch_tag_len.
int llc_hdrlen;
struct lladdr_info src, dst;
+ if (length < caplen) {
+ ND_PRINT("[length %u < caplen %u]", length, caplen);
+ nd_print_invalid(ndo);
+ return length;
+ }
if (caplen < ETHER_HDRLEN + switch_tag_len) {
nd_print_trunc(ndo);
return caplen;
}
- if (length < ETHER_HDRLEN + switch_tag_len) {
- nd_print_trunc(ndo);
- return length;
- }
if (print_encap_header != NULL)
(*print_encap_header)(ndo, encap_header_arg);