summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhil Sutter <phil@nwl.cc>2023-11-22 20:43:40 +0100
committerPhil Sutter <phil@nwl.cc>2023-11-23 18:01:21 +0100
commitf7056d0fdb43e91497615ed6f21753ee3c91db63 (patch)
tree6b8b486e2f488175d60f1c075c484db2c94b1f64
parent1af6984c57cce5169491d308b58a9c85464b2159 (diff)
libxtables: Introduce struct xt_option_entry::base
Enable guided option parser users to parse integer values with a fixed base. Signed-off-by: Phil Sutter <phil@nwl.cc>
-rw-r--r--include/xtables.h3
-rw-r--r--libxtables/xtoptions.c3
2 files changed, 4 insertions, 2 deletions
diff --git a/include/xtables.h b/include/xtables.h
index 1a9e08bb..b3c45c98 100644
--- a/include/xtables.h
+++ b/include/xtables.h
@@ -122,6 +122,7 @@ enum xt_option_flags {
* @size: size of the item pointed to by @ptroff; this is a safeguard
* @min: lowest allowed value (for singular integral types)
* @max: highest allowed value (for singular integral types)
+ * @base: assumed base of parsed value for integer types (default 0)
*/
struct xt_option_entry {
const char *name;
@@ -129,7 +130,7 @@ struct xt_option_entry {
unsigned int id, excl, also, flags;
unsigned int ptroff;
size_t size;
- unsigned int min, max;
+ unsigned int min, max, base;
};
/**
diff --git a/libxtables/xtoptions.c b/libxtables/xtoptions.c
index 25540f8b..4fd0e70e 100644
--- a/libxtables/xtoptions.c
+++ b/libxtables/xtoptions.c
@@ -161,7 +161,8 @@ static void xtopt_parse_int(struct xt_option_call *cb)
if (cb->entry->max != 0)
lmax = cb->entry->max;
- if (!xtables_strtoul(cb->arg, NULL, &value, lmin, lmax))
+ if (!xtables_strtoul_base(cb->arg, NULL, &value,
+ lmin, lmax, cb->entry->base))
xt_params->exit_err(PARAMETER_PROBLEM,
"%s: bad value for option \"--%s\", "
"or out of range (%ju-%ju).\n",