From: Guy Harris Date: Mon, 22 Oct 2018 08:39:55 +0000 (-0700) Subject: Add checks for invalid "direction" qualifiers for "decnet". X-Git-Tag: libpcap-1.10-bp~761 X-Git-Url: https://git.tcpdump.org/libpcap/commitdiff_plain/4d6e12cd183cda6eade8cac4244089cee0048c7e Add checks for invalid "direction" qualifiers for "decnet". Various 802.11 address qualifiers work only for 802.11 MAC addresses; give errors when they're used for DECNET addresses. Q_ISO isn't a direction qualifier; we don't need to test for it - "decnet iso XXX" is rejected as being syntactically invalid. Credit to OSS-Fuzz for finding the abort issue. --- diff --git a/gencode.c b/gencode.c index 33d81d82..15cb9347 100644 --- a/gencode.c +++ b/gencode.c @@ -4718,8 +4718,29 @@ gen_dnhostop(compiler_state_t *cstate, bpf_u_int32 addr, int dir) gen_or(b0, b1); return b1; - case Q_ISO: - bpf_error(cstate, "ISO host filtering not implemented"); + case Q_ADDR1: + bpf_error(cstate, "'addr1' and 'address1' are not valid qualifiers for addresses other than 802.11 MAC addresses"); + break; + + case Q_ADDR2: + bpf_error(cstate, "'addr2' and 'address2' are not valid qualifiers for addresses other than 802.11 MAC addresses"); + break; + + case Q_ADDR3: + bpf_error(cstate, "'addr3' and 'address3' are not valid qualifiers for addresses other than 802.11 MAC addresses"); + break; + + case Q_ADDR4: + bpf_error(cstate, "'addr4' and 'address4' are not valid qualifiers for addresses other than 802.11 MAC addresses"); + break; + + case Q_RA: + bpf_error(cstate, "'ra' is not a valid qualifier for addresses other than 802.11 MAC addresses"); + break; + + case Q_TA: + bpf_error(cstate, "'ta' is not a valid qualifier for addresses other than 802.11 MAC addresses"); + break; default: abort();