mirror of
https://github.com/torvalds/linux.git
synced 2026-10-07 22:37:45 -04:00
tools lib traceevent: Get rid of die in add_filter_type()
The realloc() should check return value and not to overwrite previous pointer in case of error. Signed-off-by: Namhyung Kim <[email protected]> Reviewed-by: Steven Rostedt <[email protected]> Cc: Frederic Weisbecker <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Jiri Olsa <[email protected]> Cc: Namhyung Kim <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Steven Rostedt <[email protected]> Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
This commit is contained in:
1 parent
9451a2fd78
commit
ef3072cd1d
1 file changed
+16
-5
@@ -161,11 +161,13 @@ add_filter_type(struct event_filter *filter, int id)
|
||||
if (filter_type)
|
||||
return filter_type;
|
||||
|
||||
filter->event_filters = realloc(filter->event_filters,
|
||||
sizeof(*filter->event_filters) *
|
||||
(filter->filters + 1));
|
||||
if (!filter->event_filters)
|
||||
die("Could not allocate filter");
|
||||
filter_type = realloc(filter->event_filters,
|
||||
sizeof(*filter->event_filters) *
|
||||
(filter->filters + 1));
|
||||
if (!filter_type)
|
||||
return NULL;
|
||||
|
||||
filter->event_filters = filter_type;
|
||||
|
||||
for (i = 0; i < filter->filters; i++) {
|
||||
if (filter->event_filters[i].event_id > id)
|
||||
@@ -1180,6 +1182,12 @@ static int filter_event(struct event_filter *filter,
|
||||
}
|
||||
|
||||
filter_type = add_filter_type(filter, event->id);
|
||||
if (filter_type == NULL) {
|
||||
show_error(error_str, "failed to add a new filter: %s",
|
||||
filter_str ? filter_str : "true");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (filter_type->filter)
|
||||
free_arg(filter_type->filter);
|
||||
filter_type->filter = arg;
|
||||
@@ -1417,6 +1425,9 @@ static int copy_filter_type(struct event_filter *filter,
|
||||
arg->boolean.value = 0;
|
||||
|
||||
filter_type = add_filter_type(filter, event->id);
|
||||
if (filter_type == NULL)
|
||||
return -1;
|
||||
|
||||
filter_type->filter = arg;
|
||||
|
||||
free(str);
|
||||
|
||||
Reference in new issue
Block a user