diff options
| -rw-r--r-- | tools/lib/traceevent/parse-filter.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/tools/lib/traceevent/parse-filter.c b/tools/lib/traceevent/parse-filter.c index d4b0bac80dc8..767de4f1e8ee 100644 --- a/tools/lib/traceevent/parse-filter.c +++ b/tools/lib/traceevent/parse-filter.c | |||
| @@ -161,11 +161,13 @@ add_filter_type(struct event_filter *filter, int id) | |||
| 161 | if (filter_type) | 161 | if (filter_type) |
| 162 | return filter_type; | 162 | return filter_type; |
| 163 | 163 | ||
| 164 | filter->event_filters = realloc(filter->event_filters, | 164 | filter_type = realloc(filter->event_filters, |
| 165 | sizeof(*filter->event_filters) * | 165 | sizeof(*filter->event_filters) * |
| 166 | (filter->filters + 1)); | 166 | (filter->filters + 1)); |
| 167 | if (!filter->event_filters) | 167 | if (!filter_type) |
| 168 | die("Could not allocate filter"); | 168 | return NULL; |
| 169 | |||
| 170 | filter->event_filters = filter_type; | ||
| 169 | 171 | ||
| 170 | for (i = 0; i < filter->filters; i++) { | 172 | for (i = 0; i < filter->filters; i++) { |
| 171 | if (filter->event_filters[i].event_id > id) | 173 | if (filter->event_filters[i].event_id > id) |
| @@ -1180,6 +1182,12 @@ static int filter_event(struct event_filter *filter, | |||
| 1180 | } | 1182 | } |
| 1181 | 1183 | ||
| 1182 | filter_type = add_filter_type(filter, event->id); | 1184 | filter_type = add_filter_type(filter, event->id); |
| 1185 | if (filter_type == NULL) { | ||
| 1186 | show_error(error_str, "failed to add a new filter: %s", | ||
| 1187 | filter_str ? filter_str : "true"); | ||
| 1188 | return -1; | ||
| 1189 | } | ||
| 1190 | |||
| 1183 | if (filter_type->filter) | 1191 | if (filter_type->filter) |
| 1184 | free_arg(filter_type->filter); | 1192 | free_arg(filter_type->filter); |
| 1185 | filter_type->filter = arg; | 1193 | filter_type->filter = arg; |
| @@ -1417,6 +1425,9 @@ static int copy_filter_type(struct event_filter *filter, | |||
| 1417 | arg->boolean.value = 0; | 1425 | arg->boolean.value = 0; |
| 1418 | 1426 | ||
| 1419 | filter_type = add_filter_type(filter, event->id); | 1427 | filter_type = add_filter_type(filter, event->id); |
| 1428 | if (filter_type == NULL) | ||
| 1429 | return -1; | ||
| 1430 | |||
| 1420 | filter_type->filter = arg; | 1431 | filter_type->filter = arg; |
| 1421 | 1432 | ||
| 1422 | free(str); | 1433 | free(str); |
