]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
expression: initialize list of expression to silence gcc compile warning
authorPablo Neira Ayuso <pablo@netfilter.org>
Mon, 31 Mar 2025 15:15:39 +0000 (17:15 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 31 Mar 2025 16:15:12 +0000 (18:15 +0200)
The helper function to translate flagcmp expression to binop expression
results in the following compile warning.

  src/expression.c: In function 'list_expr_to_binop':
  src/expression.c:1286:16: warning: 'last' may be used uninitialized [-Wmaybe-uninitialized]
  1286 |         return last;

While at it, add assert() to validate the premises where this function
can be called.

Fixes: 4d5990c92c83 ("src: transform flag match expression to binop expression from parser")
Reported-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/expression.c

index d32702420b553b6d8be34e358dfcd9de92142c9c..228754fc2067e732bac334ded211fd6a5fffca8f 100644 (file)
@@ -1266,7 +1266,9 @@ struct expr *list_expr_alloc(const struct location *loc)
 /* list is assumed to have two items at least, otherwise extend this! */
 struct expr *list_expr_to_binop(struct expr *expr)
 {
-       struct expr *first, *last, *i;
+       struct expr *first, *last = NULL, *i;
+
+       assert(!list_empty(&expr->expressions));
 
        first = list_first_entry(&expr->expressions, struct expr, list);
        i = first;
@@ -1279,6 +1281,9 @@ struct expr *list_expr_to_binop(struct expr *expr)
                        last = binop_expr_alloc(&expr->location, OP_OR, i, last);
                }
        }
+       /* list with one single item only, this should not happen. */
+       assert(first);
+
        /* zap list expressions, they have been moved to binop expression. */
        init_list_head(&expr->expressions);
        expr_free(expr);