Payload munging means that evaluation of payload expressions may not be
idempotent. Add a flag to prevent them from being evaluated more than
once.
Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
Signed-off-by: Florian Westphal <fw@strlen.de>
enum proto_bases base;
unsigned int offset;
bool is_raw;
+ bool evaluated;
} payload;
struct {
/* EXPR_EXTHDR */
{
struct expr *expr = *exprp;
+ if (expr->payload.evaluated)
+ return 0;
+
if (__expr_evaluate_payload(ctx, expr) < 0)
return -1;
if (payload_needs_adjustment(expr))
expr_evaluate_bits(ctx, exprp);
+ expr->payload.evaluated = true;
+
return 0;
}