summaryrefslogtreecommitdiffstats
path: root/sys/net
diff options
context:
space:
mode:
Diffstat (limited to 'sys/net')
-rw-r--r--sys/net/bpf_filter.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/sys/net/bpf_filter.c b/sys/net/bpf_filter.c
index 4064317..813d2f4 100644
--- a/sys/net/bpf_filter.c
+++ b/sys/net/bpf_filter.c
@@ -552,14 +552,13 @@ bpf_validate(f, len)
* the code block.
*/
if (BPF_CLASS(p->code) == BPF_JMP) {
- register int from = i + 1;
+ register u_int offset;
- if (BPF_OP(p->code) == BPF_JA) {
- if (from >= len || p->k >= len - from)
- return 0;
- }
- else if (from >= len || p->jt >= len - from ||
- p->jf >= len - from)
+ if (BPF_OP(p->code) == BPF_JA)
+ offset = p->k;
+ else
+ offset = p->jt > p->jf ? p->jt : p->jf;
+ if (offset >= (u_int)(len - i) - 1)
return 0;
}
/*
OpenPOWER on IntegriCloud