diff options
-rw-r--r-- | lib/libpcap/gencode.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/libpcap/gencode.c b/lib/libpcap/gencode.c index d8b02985c72..e0e97aa4994 100644 --- a/lib/libpcap/gencode.c +++ b/lib/libpcap/gencode.c @@ -1,4 +1,4 @@ -/* $OpenBSD: gencode.c,v 1.50 2018/11/09 20:36:04 denis Exp $ */ +/* $OpenBSD: gencode.c,v 1.51 2018/11/10 10:17:37 denis Exp $ */ /* * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998 @@ -3364,6 +3364,11 @@ gen_vlan(vlan_num) /*NOTREACHED*/ } + if (vlan_num > 4095) { + bpf_error("invalid VLAN number : %d", vlan_num); + /*NOTREACHED*/ + } + /* * Change the offsets to point to the type and data fields within * the VLAN packet. This is somewhat of a kludge. @@ -3395,7 +3400,7 @@ gen_vlan(vlan_num) if (vlan_num >= 0) { struct block *b1; - b1 = gen_cmp(orig_nl, BPF_H, (bpf_int32)vlan_num); + b1 = gen_mcmp(orig_nl, BPF_H, (bpf_int32)vlan_num, 0x0FFF); gen_and(b0, b1); b0 = b1; } |