Some bitmask variables are not cleared. Signed-off-by: Jeremy Sowden <jeremy@xxxxxxxxxx> --- src/evaluate.c | 2 ++ src/netlink_delinearize.c | 1 + 2 files changed, 3 insertions(+) diff --git a/src/evaluate.c b/src/evaluate.c index f4260436ae0f..4a23b231c74d 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -483,6 +483,7 @@ static void expr_evaluate_bits(struct eval_ctx *ctx, struct expr **exprp) mask = constant_expr_alloc(&expr->location, expr_basetype(expr), BYTEORDER_HOST_ENDIAN, masklen, NULL); mpz_set(mask->value, bitmask); + mpz_clear(bitmask); and = binop_expr_alloc(&expr->location, OP_AND, expr, mask); and->dtype = expr->dtype; @@ -2290,6 +2291,7 @@ static int stmt_evaluate_payload(struct eval_ctx *ctx, struct stmt *stmt) mpz_export_data(data, bitmask, BYTEORDER_HOST_ENDIAN, sizeof(data)); mask = constant_expr_alloc(&payload->location, expr_basetype(payload), BYTEORDER_HOST_ENDIAN, masklen, data); + mpz_clear(bitmask); payload_bytes = payload_expr_alloc(&payload->location, NULL, 0); payload_init_raw(payload_bytes, payload->payload.base, diff --git a/src/netlink_delinearize.c b/src/netlink_delinearize.c index 3c80895a43f9..79efda123c14 100644 --- a/src/netlink_delinearize.c +++ b/src/netlink_delinearize.c @@ -2558,6 +2558,7 @@ static void stmt_payload_binop_postprocess(struct rule_pp_ctx *ctx) mpz_init_bitmask(bitmask, payload->len); mpz_xor(bitmask, bitmask, value->value); mpz_set(value->value, bitmask); + mpz_clear(bitmask); break; case OP_OR: /* IIb */ break; -- 2.25.1