From 330a32d4026197a4a620fe8ff3028cdc8b97bbb0 Mon Sep 17 00:00:00 2001 From: Kris Katterjohn Date: Sun, 20 Nov 2005 13:41:34 -0800 Subject: [PATCH] --- yaml --- r: 14561 b: refs/heads/master c: fb0d366b0803571f06a5b838f02c6706fc287995 h: refs/heads/master i: 14559: 392504baa28b00b1d654488590d97e30f66c6625 v: v3 --- [refs] | 2 +- trunk/net/core/filter.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 97252d273c23..fb0ffbdcc788 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: aa8751667dcd757dd9a711b51140adf181501c44 +refs/heads/master: fb0d366b0803571f06a5b838f02c6706fc287995 diff --git a/trunk/net/core/filter.c b/trunk/net/core/filter.c index 079c2edff789..2841bfce29d6 100644 --- a/trunk/net/core/filter.c +++ b/trunk/net/core/filter.c @@ -116,8 +116,6 @@ int sk_run_filter(struct sk_buff *skb, struct sock_filter *filter, int flen) A /= X; continue; case BPF_ALU|BPF_DIV|BPF_K: - if (fentry->k == 0) - return 0; A /= fentry->k; continue; case BPF_ALU|BPF_AND|BPF_X: @@ -320,6 +318,10 @@ int sk_chk_filter(struct sock_filter *filter, int flen) } } + /* check for division by zero -Kris Katterjohn 2005-10-30 */ + if (ftest->code == (BPF_ALU|BPF_DIV|BPF_K) && ftest->k == 0) + return -EINVAL; + /* check that memory operations use valid addresses. */ if (ftest->k >= BPF_MEMWORDS) { /* but it might not be a memory operation... */