From c6c70ab30bd97dd680f3bdd297a14ff426fd0729 Mon Sep 17 00:00:00 2001 From: Sam Liddicott Date: Tue, 7 Jan 2014 09:11:07 -0800 Subject: [PATCH] xt_quota2: fix 2 bugs when not in grow mode 1. XT_QUOTA_NO_CHANGE should not alter quota to zero ever 2. XT_QUOTA_PACKET should not be set to zero based on skb->len Signed-off-by: Sam Liddicott --- extensions/xt_quota2.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/extensions/xt_quota2.c b/extensions/xt_quota2.c index ff91fcb..aa00207 100644 --- a/extensions/xt_quota2.c +++ b/extensions/xt_quota2.c @@ -219,13 +219,14 @@ quota_mt2(const struct sk_buff *skb, struct xt_action_param *par) } ret = true; } else { - if (e->quota >= skb->len) { + if (e->quota >= ((q->flags & XT_QUOTA_PACKET) ? 1 : skb->len)) { if (!(q->flags & XT_QUOTA_NO_CHANGE)) e->quota -= (q->flags & XT_QUOTA_PACKET) ? 1 : skb->len; ret = !ret; } else { /* we do not allow even small packets from now on */ - e->quota = 0; + if (!(q->flags & XT_QUOTA_NO_CHANGE)) + e->quota = 0; } q->quota = e->quota; }