From 1189d830ea4fd269da87761d400ebabca02e1ef3 Mon Sep 17 00:00:00 2001 From: Phil Sutter Date: Fri, 5 Apr 2019 13:21:19 +0200 Subject: xshared: Merge and share parse_chain() Have a common routine to perform chain name checks, combining all variants' requirements. Signed-off-by: Phil Sutter --- iptables/xshared.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'iptables/xshared.c') diff --git a/iptables/xshared.c b/iptables/xshared.c index 2d3ef679..bd545d6b 100644 --- a/iptables/xshared.c +++ b/iptables/xshared.c @@ -892,3 +892,27 @@ set_option(unsigned int *options, unsigned int option, u_int16_t *invflg, *invflg |= inverse_for_options[i]; } } + +void parse_chain(const char *chainname) +{ + const char *ptr; + + if (strlen(chainname) >= XT_EXTENSION_MAXNAMELEN) + xtables_error(PARAMETER_PROBLEM, + "chain name `%s' too long (must be under %u chars)", + chainname, XT_EXTENSION_MAXNAMELEN); + + if (*chainname == '-' || *chainname == '!') + xtables_error(PARAMETER_PROBLEM, + "chain name not allowed to start with `%c'\n", + *chainname); + + if (xtables_find_target(chainname, XTF_TRY_LOAD)) + xtables_error(PARAMETER_PROBLEM, + "chain name may not clash with target name\n"); + + for (ptr = chainname; *ptr; ptr++) + if (isspace(*ptr)) + xtables_error(PARAMETER_PROBLEM, + "Invalid chain name `%s'", chainname); +} -- cgit v1.2.3