From 6ca4dfa45345dc4ac18a83be5e2326bad5a69fe6 Mon Sep 17 00:00:00 2001 From: Jeremy Sowden Date: Tue, 3 Mar 2020 09:48:33 +0000 Subject: src: fix leaks. Some bitmask variables are not cleared. Signed-off-by: Jeremy Sowden Signed-off-by: Florian Westphal --- 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 f4260436..4a23b231 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 3c80895a..79efda12 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; -- cgit v1.2.3