}
/* Alloc group list of the right size */
- grp_list = malloc(grp_list_size * sizeof(gid_t));
+ grp_list = zmalloc(grp_list_size * sizeof(gid_t));
if (!grp_list) {
perror("malloc");
goto end;
goto end;
}
- data = (void*) malloc(size);
+ data = zmalloc(size);
+ if (!data) {
+ ret = -ENOMEM;
+ goto end;
+ }
/* Get payload data */
ret = recv_data_sessiond(data, size);
goto end;
}
- handle = malloc(sizeof(struct lttng_handle));
+ handle = zmalloc(sizeof(struct lttng_handle));
if (handle == NULL) {
PERROR("malloc handle");
goto end;
/* 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);
}
if (err < 0) {
PERROR("asprintf");
- goto end;
+ goto error;
}
}
op = "==";
}
- if (filter) {
- err = asprintf(&jul_filter, "%s && int_loglevel %s %d", filter, op,
+ if (filter || jul_filter) {
+ char *new_filter;
+
+ err = asprintf(&new_filter, "(%s) && (int_loglevel %s %d)",
+ jul_filter ? jul_filter : filter, op,
ev->loglevel);
+ if (jul_filter) {
+ free(jul_filter);
+ }
+ jul_filter = new_filter;
} else {
err = asprintf(&jul_filter, "int_loglevel %s %d", op,
ev->loglevel);
}
if (err < 0) {
PERROR("asprintf");
- free(jul_filter);
- jul_filter = NULL;
- goto end;
+ goto error;
}
}
-end:
return jul_filter;
+error:
+ free(jul_filter);
+ return NULL;
}
/*
return 0;
parse_error:
- filter_bytecode_free(ctx);
filter_ir_free(ctx);
filter_parser_ctx_free(ctx);
filter_alloc_error:
+ 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 */
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:
/*
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;