summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Sowden <jeremy@azazel.net>2020-03-03 09:48:33 +0000
committerFlorian Westphal <fw@strlen.de>2020-03-04 23:36:53 +0100
commit6ca4dfa45345dc4ac18a83be5e2326bad5a69fe6 (patch)
tree90ae5fdc7d57a3d3480ec97b7b98596f86596b86
parent9a7fab8f07d0caf211bb977cc8bcc4e227975935 (diff)
src: fix leaks.
Some bitmask variables are not cleared. Signed-off-by: Jeremy Sowden <jeremy@azazel.net> Signed-off-by: Florian Westphal <fw@strlen.de>
-rw-r--r--src/evaluate.c2
-rw-r--r--src/netlink_delinearize.c1
2 files changed, 3 insertions, 0 deletions
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;