X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Flib%2Flttng-ctl%2Flttng-ctl.c;h=9686b7d0fa4b9d172ab28fb9619656771ebfdc95;hb=3b4a6e401ee2df275299aa0460f0ae5b693f8aba;hp=a385d1b9a0a540f589d843b11a78325975cc4aa9;hpb=3f0c88379cfbbbec84641e13b21f290a563f8729;p=lttng-tools.git diff --git a/src/lib/lttng-ctl/lttng-ctl.c b/src/lib/lttng-ctl/lttng-ctl.c index a385d1b9a..9686b7d0f 100644 --- a/src/lib/lttng-ctl/lttng-ctl.c +++ b/src/lib/lttng-ctl/lttng-ctl.c @@ -74,6 +74,7 @@ static int connected; */ int lttng_opt_quiet; int lttng_opt_verbose; +int lttng_opt_mi; /* * Copy string from src to dst and enforce null terminated byte. @@ -104,6 +105,7 @@ void lttng_ctl_copy_lttng_domain(struct lttng_domain *dst, case LTTNG_DOMAIN_KERNEL: case LTTNG_DOMAIN_UST: case LTTNG_DOMAIN_JUL: + case LTTNG_DOMAIN_LOG4J: memcpy(dst, src, sizeof(struct lttng_domain)); break; default: @@ -824,6 +826,12 @@ static int generate_filter(char *filter_expression, ret = -LTTNG_ERR_FILTER_INVAL; goto parse_error; } + /* Validate strings used as literals in the expression */ + ret = filter_visitor_ir_validate_string(ctx); + if (ret) { + ret = -LTTNG_ERR_FILTER_INVAL; + goto parse_error; + } dbg_printf("done\n"); dbg_printf("Generating bytecode... "); @@ -931,7 +939,8 @@ int lttng_enable_event_with_exclusions(struct lttng_handle *handle, * filtering by logger name. */ if (exclusion_count == 0 && filter_expression == NULL && - handle->domain.type != LTTNG_DOMAIN_JUL) { + (handle->domain.type != LTTNG_DOMAIN_JUL && + handle->domain.type != LTTNG_DOMAIN_LOG4J)) { goto ask_sessiond; } @@ -941,8 +950,10 @@ int lttng_enable_event_with_exclusions(struct lttng_handle *handle, */ /* Parse filter expression */ - if (filter_expression != NULL || handle->domain.type == LTTNG_DOMAIN_JUL) { - if (handle->domain.type == LTTNG_DOMAIN_JUL) { + if (filter_expression != NULL || handle->domain.type == LTTNG_DOMAIN_JUL + || handle->domain.type == LTTNG_DOMAIN_LOG4J) { + if (handle->domain.type == LTTNG_DOMAIN_JUL || + handle->domain.type == LTTNG_DOMAIN_LOG4J) { char *jul_filter; /* Setup JUL filter if needed. */ @@ -973,7 +984,7 @@ int lttng_enable_event_with_exclusions(struct lttng_handle *handle, + LTTNG_SYMBOL_NAME_LEN * exclusion_count); if (!varlen_data) { ret = -LTTNG_ERR_EXCLUSION_NOMEM; - goto filter_error; + goto mem_error; } /* Put exclusion names first in the data */ @@ -1002,19 +1013,19 @@ int lttng_enable_event_with_exclusions(struct lttng_handle *handle, lsm.u.enable.bytecode_len + lsm.u.enable.expression_len, NULL); free(varlen_data); -filter_error: - if (filter_expression) { +mem_error: + if (filter_expression && ctx) { filter_bytecode_free(ctx); filter_ir_free(ctx); filter_parser_ctx_free(ctx); - if (free_filter_expression) { - /* - * The filter expression has been replaced and must be - * freed as it is not the original filter expression - * received as a parameter. - */ - free(filter_expression); - } + } +filter_error: + if (free_filter_expression) { + /* + * The filter expression has been replaced and must be freed as it is + * not the original filter expression received as a parameter. + */ + free(filter_expression); } error: /*