Enable guided option parser users to parse integer values with a fixed base. Signed-off-by: Phil Sutter <phil@xxxxxx> --- include/xtables.h | 3 ++- libxtables/xtoptions.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/include/xtables.h b/include/xtables.h index 1a9e08bb131ab..b3c45c981b1c7 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 25540f8b88c6d..4fd0e70e6b555 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", -- 2.41.0