From: Phil Sutter Date: Tue, 22 Sep 2020 18:01:15 +0000 (+0200) Subject: libxtables: Register multiple extensions in ascending order X-Git-Tag: v1.8.6~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b5f1a3beac1d1f2b96c8be8ebec450f5ea758090;p=thirdparty%2Fiptables.git libxtables: Register multiple extensions in ascending order The newly introduced ordered insert algorithm in xtables_register_{match,target}() works best if extensions of same name are passed in ascending revisions. Since this is the case in about all extensions' arrays, iterate over them from beginning to end. Signed-off-by: Phil Sutter --- diff --git a/libxtables/xtables.c b/libxtables/xtables.c index 10d4e703..7152c657 100644 --- a/libxtables/xtables.c +++ b/libxtables/xtables.c @@ -1141,9 +1141,10 @@ static bool xtables_fully_register_pending_match(struct xtables_match *me, void xtables_register_matches(struct xtables_match *match, unsigned int n) { - do { - xtables_register_match(&match[--n]); - } while (n > 0); + int i; + + for (i = 0; i < n; i++) + xtables_register_match(&match[i]); } void xtables_register_target(struct xtables_target *me) @@ -1269,9 +1270,10 @@ static bool xtables_fully_register_pending_target(struct xtables_target *me, void xtables_register_targets(struct xtables_target *target, unsigned int n) { - do { - xtables_register_target(&target[--n]); - } while (n > 0); + int i; + + for (i = 0; i < n; i++) + xtables_register_target(&target[i]); } /* receives a list of xtables_rule_match, release them */