From: Phil Sutter Date: Wed, 22 Nov 2023 19:43:40 +0000 (+0100) Subject: libxtables: Introduce struct xt_option_entry::base X-Git-Tag: v1.8.11~153 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f7056d0fdb43e91497615ed6f21753ee3c91db63;p=thirdparty%2Fiptables.git 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 --- 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",