]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
src: fix leaks.
authorJeremy Sowden <jeremy@azazel.net>
Tue, 3 Mar 2020 09:48:33 +0000 (09:48 +0000)
committerFlorian Westphal <fw@strlen.de>
Wed, 4 Mar 2020 22:36:53 +0000 (23:36 +0100)
Some bitmask variables are not cleared.

Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
Signed-off-by: Florian Westphal <fw@strlen.de>
src/evaluate.c
src/netlink_delinearize.c

index f4260436ae0f5444efe6aba1be87044fcd5a8faf..4a23b231c74d31746111f892d1a81f40356898f4 100644 (file)
@@ -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,
index 3c80895a43f98eca93fa46a31c33f15783eb2be9..79efda123c14618188fae9570051ec9447891b14 100644 (file)
@@ -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;