From 3f0c88379cfbbbec84641e13b21f290a563f8729 Mon Sep 17 00:00:00 2001 From: David Goulet Date: Mon, 14 Jul 2014 14:32:10 -0400 Subject: [PATCH] Fix: avoid freeing invalid ptr in filter bytecode Reported-by: Jonathan Rajotte Signed-off-by: David Goulet --- .../filter/filter-visitor-generate-bytecode.c | 13 +++++++++---- src/lib/lttng-ctl/lttng-ctl.c | 1 - 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/lib/lttng-ctl/filter/filter-visitor-generate-bytecode.c b/src/lib/lttng-ctl/filter/filter-visitor-generate-bytecode.c index 8c6dc96ff..7d6275747 100644 --- a/src/lib/lttng-ctl/filter/filter-visitor-generate-bytecode.c +++ b/src/lib/lttng-ctl/filter/filter-visitor-generate-bytecode.c @@ -520,10 +520,15 @@ int recursive_visit_gen_bytecode(struct filter_parser_ctx *ctx, LTTNG_HIDDEN void filter_bytecode_free(struct filter_parser_ctx *ctx) { - free(ctx->bytecode); - ctx->bytecode = NULL; - free(ctx->bytecode_reloc); - ctx->bytecode_reloc = NULL; + if (ctx->bytecode) { + free(ctx->bytecode); + ctx->bytecode = NULL; + } + + if (ctx->bytecode_reloc) { + free(ctx->bytecode_reloc); + ctx->bytecode_reloc = NULL; + } } LTTNG_HIDDEN diff --git a/src/lib/lttng-ctl/lttng-ctl.c b/src/lib/lttng-ctl/lttng-ctl.c index 01572dc94..a385d1b9a 100644 --- a/src/lib/lttng-ctl/lttng-ctl.c +++ b/src/lib/lttng-ctl/lttng-ctl.c @@ -851,7 +851,6 @@ static int generate_filter(char *filter_expression, return 0; parse_error: - filter_bytecode_free(ctx); filter_ir_free(ctx); filter_parser_ctx_free(ctx); filter_alloc_error: -- 2.34.1