* xtoptions + quota: parse and store 64bit values?
@ 2011-05-19 3:26 JP Abgrall
2011-05-20 14:06 ` Jan Engelhardt
0 siblings, 1 reply; 2+ messages in thread
From: JP Abgrall @ 2011-05-19 3:26 UTC (permalink / raw)
To: netfilter-devel
Without this change, my kernel's xt_quota.c::quota_mt_check() doesn't
see the values.
>From b65b9fe5096bd49a9ec2f0f6c2f23d274cfc88ee Mon Sep 17 00:00:00 2001
From: JP Abgrall <jpa@google.com>
Date: Wed, 18 May 2011 20:19:39 -0700
Subject: [PATCH] xtoptions + quota: parse and store 64bit values
The xtables_strtoul() would cram a long long into a long.
The parse_int would try to cram a UINT64 into a long.
The quota_parse would just ignore whatever value was parsed.
Change-Id: Ie1f05e98e974a255d962dd757a5592458f942f8b
---
extensions/libxt_quota.c | 1 +
include/xtables.h.in | 2 +-
xtables.c | 4 ++--
xtoptions.c | 4 ++--
4 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/extensions/libxt_quota.c b/extensions/libxt_quota.c
index 988f404..dc9b3b0 100644
--- a/extensions/libxt_quota.c
+++ b/extensions/libxt_quota.c
@@ -47,6 +47,7 @@ static void quota_parse(struct xt_option_call *cb)
xtables_option_parse(cb);
if (cb->invert)
info->flags |= XT_QUOTA_INVERT;
+ info->quota = cb->val.u64;
}
static struct xtables_match quota_match = {
diff --git a/include/xtables.h.in b/include/xtables.h.in
index 38c0e5e..5e9dec7 100644
--- a/include/xtables.h.in
+++ b/include/xtables.h.in
@@ -408,7 +408,7 @@ extern void xtables_register_matches(struct
xtables_match *, unsigned int);
extern void xtables_register_target(struct xtables_target *me);
extern void xtables_register_targets(struct xtables_target *, unsigned int);
-extern bool xtables_strtoul(const char *, char **, unsigned long *,
+extern bool xtables_strtoul(const char *, char **, unsigned long long *,
unsigned long, unsigned long);
extern bool xtables_strtoui(const char *, char **, unsigned int *,
unsigned int, unsigned int);
diff --git a/xtables.c b/xtables.c
index 9038f89..69e79b1 100644
--- a/xtables.c
+++ b/xtables.c
@@ -426,7 +426,7 @@ int xtables_load_ko(const char *modprobe, bool quiet)
* Returns true/false whether number was accepted. On failure, *value has
* undefined contents.
*/
-bool xtables_strtoul(const char *s, char **end, unsigned long *value,
+bool xtables_strtoul(const char *s, char **end, unsigned long long *value,
unsigned long min, unsigned long max)
{
unsigned long v;
@@ -454,7 +454,7 @@ bool xtables_strtoul(const char *s, char **end,
unsigned long *value,
bool xtables_strtoui(const char *s, char **end, unsigned int *value,
unsigned int min, unsigned int max)
{
- unsigned long v;
+ unsigned long long v;
bool ret;
ret = xtables_strtoul(s, end, &v, min, max);
diff --git a/xtoptions.c b/xtoptions.c
index 8d54dd8..7a35ffa 100644
--- a/xtoptions.c
+++ b/xtoptions.c
@@ -105,7 +105,7 @@ static void xtopt_parse_int(struct xt_option_call *cb)
{
const struct xt_option_entry *entry = cb->entry;
unsigned long long lmin = 0, lmax = UINT32_MAX;
- unsigned int value;
+ unsigned long long value;
if (entry->type == XTTYPE_UINT8)
lmax = UINT8_MAX;
@@ -118,7 +118,7 @@ static void xtopt_parse_int(struct xt_option_call *cb)
if (cb->entry->max != 0)
lmax = cb->entry->max;
- if (!xtables_strtoui(cb->arg, NULL, &value, lmin, lmax))
+ if (!xtables_strtoul(cb->arg, NULL, &value, lmin, lmax))
xt_params->exit_err(PARAMETER_PROBLEM,
"%s: bad value for option \"--%s\", "
"or out of range (%llu-%llu).\n",
--
1.7.3.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: xtoptions + quota: parse and store 64bit values?
2011-05-19 3:26 xtoptions + quota: parse and store 64bit values? JP Abgrall
@ 2011-05-20 14:06 ` Jan Engelhardt
0 siblings, 0 replies; 2+ messages in thread
From: Jan Engelhardt @ 2011-05-20 14:06 UTC (permalink / raw)
To: JP Abgrall; +Cc: netfilter-devel
On Thursday 2011-05-19 05:26, JP Abgrall wrote:
>Without this change, my kernel's xt_quota.c::quota_mt_check() doesn't
>see the values.
>The xtables_strtoul() would cram a long long into a long.
>The parse_int would try to cram a UINT64 into a long.
>The quota_parse would just ignore whatever value was parsed.
Thanks, taken.
>@@ -47,6 +47,7 @@ static void quota_parse(struct xt_option_call *cb)
> xtables_option_parse(cb);
> if (cb->invert)
> info->flags |= XT_QUOTA_INVERT;
>+ info->quota = cb->val.u64;
> }
>
> static struct xtables_match quota_match = {
I replaced this by XTOPT_PUT as it should have been.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2011-05-20 14:06 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-05-19 3:26 xtoptions + quota: parse and store 64bit values? JP Abgrall
2011-05-20 14:06 ` Jan Engelhardt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).