summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorJan Engelhardt <jengelh@computergmbh.de>2008-01-31 04:06:38 -0800
committerDavid S. Miller <davem@davemloft.net>2008-01-31 19:27:43 -0800
commitedc26f7aaa23591c779d6d6fc833c0c96fbeb3c0 (patch)
tree4ba051cb54853003e308f70f69dad58a25a07753 /net
parent37c08387fc31a0fe7a570664c93be4f1c1bc0c94 (diff)
downloadlinux-edc26f7aaa23591c779d6d6fc833c0c96fbeb3c0.tar.gz
linux-edc26f7aaa23591c779d6d6fc833c0c96fbeb3c0.tar.bz2
linux-edc26f7aaa23591c779d6d6fc833c0c96fbeb3c0.zip
[NETFILTER]: xt_owner: allow matching UID/GID ranges
Add support for ranges to the new revision. This doesn't affect compatibility since the new revision was not released yet. Signed-off-by: Jan Engelhardt <jengelh@computergmbh.de> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r--net/netfilter/xt_owner.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/net/netfilter/xt_owner.c b/net/netfilter/xt_owner.c
index d382f9cc38b0..9059c16144c3 100644
--- a/net/netfilter/xt_owner.c
+++ b/net/netfilter/xt_owner.c
@@ -4,8 +4,8 @@
*
* (C) 2000 Marc Boucher <marc@mbsi.ca>
*
- * Copyright © CC Computer Consultants GmbH, 2007
- * Contact: <jengelh@computergmbh.de>
+ * Copyright © CC Computer Consultants GmbH, 2007 - 2008
+ * <jengelh@computergmbh.de>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
@@ -102,13 +102,15 @@ owner_mt(const struct sk_buff *skb, const struct net_device *in,
(XT_OWNER_UID | XT_OWNER_GID)) == 0;
if (info->match & XT_OWNER_UID)
- if ((filp->f_uid != info->uid) ^
- !!(info->invert & XT_OWNER_UID))
+ if ((filp->f_uid >= info->uid_min &&
+ filp->f_uid <= info->uid_max) ^
+ !(info->invert & XT_OWNER_UID))
return false;
if (info->match & XT_OWNER_GID)
- if ((filp->f_gid != info->gid) ^
- !!(info->invert & XT_OWNER_GID))
+ if ((filp->f_gid >= info->gid_min &&
+ filp->f_gid <= info->gid_max) ^
+ !(info->invert & XT_OWNER_GID))
return false;
return true;