On Tue, Jul 16, 2019 at 01:51:20PM +0200, Pablo Neira Ayuso wrote:
>  add rule ip testNEW test6 jump test8
>                                 ^^^^^
>  Error: invalid verdict chain expression value

Note that I can't reproduce this issue locally.

[...]
> -                     if ((stmt->expr->chain->etype != EXPR_SYMBOL &&
> -                         stmt->expr->chain->etype != EXPR_VALUE) ||
> -                         stmt->expr->chain->symtype != SYMBOL_VALUE) {
> -                             return stmt_error(ctx, stmt,
> -                                               "invalid verdict chain 
> expression %s\n",
> -                                               expr_name(stmt->expr->chain));
> -                     }

So I guess the problem is that for an etype of EXPR_VALUE, symtype is
still checked. The latter is used by EXPR_SYMBOL only, but since
SYMBOL_VALUE is 0 (implicitly, it's the first item in enum
symbol_types) this probably works by accident.

I still don't understand why it doesn't work for you, but I guess the
bug is found. So probably

| if ((stmt->expr->chain->etype != EXPR_SYMBOL ||
|       stmt->expr->chain->symtype != SYMBOL_VALUE) &&
|     stmt->expr->chain->etype != EXPR_VALUE)) {

is right.

Cheers, Phil

Reply via email to