X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=src%2Flib%2Flttng-ctl%2Flttng-ctl.c;h=cacae13bb84da3e4033a016c244cbfa970d7172c;hb=d979615c8e80be1989c7e889169fb6976f8080d6;hp=a92bf39125b287528d202d9160e09d7b7c7462f2;hpb=7ca1dc6f290c2d9bc1c01a828ae418a8739487fb;p=lttng-tools.git diff --git a/src/lib/lttng-ctl/lttng-ctl.c b/src/lib/lttng-ctl/lttng-ctl.c index a92bf3912..cacae13bb 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: @@ -703,7 +705,7 @@ static char *set_jul_filter(const char *filter, struct lttng_event *ev) /* Don't add filter for the '*' event. */ if (ev->name[0] != '*') { if (filter) { - err = asprintf(&jul_filter, "%s && logger_name == \"%s\"", filter, + err = asprintf(&jul_filter, "(%s) && (logger_name == \"%s\")", filter, ev->name); } else { err = asprintf(&jul_filter, "logger_name == \"%s\"", ev->name); @@ -727,7 +729,7 @@ static char *set_jul_filter(const char *filter, struct lttng_event *ev) if (filter || jul_filter) { char *new_filter; - err = asprintf(&new_filter, "%s && int_loglevel %s %d", + err = asprintf(&new_filter, "(%s) && (int_loglevel %s %d)", jul_filter ? jul_filter : filter, op, ev->loglevel); if (jul_filter) { @@ -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. */ @@ -1056,7 +1067,7 @@ int lttng_disable_event(struct lttng_handle *handle, const char *name, lttng_ctl_copy_lttng_domain(&lsm.domain, &handle->domain); - if (name != NULL) { + if (name != NULL && *name != '*') { lttng_ctl_copy_string(lsm.u.disable.name, name, sizeof(lsm.u.disable.name)); lsm.cmd_type = LTTNG_DISABLE_EVENT;