The counter 'i' is used in a number of places in conf_ports(), but in one of those we unnecessarily shadow it in an inner scope. We could re-use the same 'i' every time, but each use is logically separate, so instead remove the outer declaration and declare it locally in each of the clauses where we need it. While we're there change it from a signed to unsigned int, since it's used to iterate over port numbers which are generally treated as unsigned. Signed-off-by: David Gibson <david(a)gibson.dropbear.id.au> --- conf.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/conf.c b/conf.c index c668eea..3fbd308 100644 --- a/conf.c +++ b/conf.c @@ -183,7 +183,6 @@ static int conf_ports(const struct ctx *c, char optname, const char *optarg, char buf[BUFSIZ], *spec, *p; sa_family_t af = AF_UNSPEC; bool exclude_only = true; - unsigned i; if (!strcmp(optarg, "none")) { if (fwd->mode) @@ -200,7 +199,7 @@ static int conf_ports(const struct ctx *c, char optname, const char *optarg, } if (!strcmp(optarg, "all")) { - int i; + unsigned i; if (fwd->mode || c->mode != MODE_PASST) return -EINVAL; @@ -247,6 +246,7 @@ static int conf_ports(const struct ctx *c, char optname, const char *optarg, p = spec; do { struct port_range xrange; + unsigned i; if (*p != '~') { /* Not an exclude range, parse later */ @@ -268,6 +268,8 @@ static int conf_ports(const struct ctx *c, char optname, const char *optarg, } while ((p = next_chunk(p, ','))); if (exclude_only) { + unsigned i; + for (i = 0; i < PORT_EPHEMERAL_MIN; i++) { if (bitmap_isset(exclude, i)) continue; @@ -287,6 +289,7 @@ static int conf_ports(const struct ctx *c, char optname, const char *optarg, p = spec; do { struct port_range orig_range, mapped_range; + unsigned i; if (*p == '~') /* Exclude range, already parsed */ -- 2.37.3