From 4d92376beb265d57d97fddd06a32688671a64c3f Mon Sep 17 00:00:00 2001 From: jkim Date: Fri, 29 Aug 2008 01:47:45 +0000 Subject: Simplify jump instruction range checks. MFC after: 1 month --- sys/net/bpf_filter.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'sys/net') 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; } /* -- cgit v1.1