|
@@ -467,8 +467,10 @@ int pevent_register_function(struct pevent *pevent, char *func,
|
|
|
item->mod = NULL;
|
|
|
item->addr = addr;
|
|
|
|
|
|
- pevent->funclist = item;
|
|
|
+ if (!item->func || (mod && !item->mod))
|
|
|
+ die("malloc func");
|
|
|
|
|
|
+ pevent->funclist = item;
|
|
|
pevent->func_count++;
|
|
|
|
|
|
return 0;
|
|
@@ -583,10 +585,13 @@ int pevent_register_print_string(struct pevent *pevent, char *fmt,
|
|
|
item = malloc_or_die(sizeof(*item));
|
|
|
|
|
|
item->next = pevent->printklist;
|
|
|
- pevent->printklist = item;
|
|
|
item->printk = strdup(fmt);
|
|
|
item->addr = addr;
|
|
|
|
|
|
+ if (!item->printk)
|
|
|
+ die("malloc fmt");
|
|
|
+
|
|
|
+ pevent->printklist = item;
|
|
|
pevent->printk_count++;
|
|
|
|
|
|
return 0;
|
|
@@ -2150,6 +2155,8 @@ process_fields(struct event_format *event, struct print_flag_sym **list, char **
|
|
|
if (value == NULL)
|
|
|
goto out_free;
|
|
|
field->value = strdup(value);
|
|
|
+ if (field->value == NULL)
|
|
|
+ goto out_free;
|
|
|
|
|
|
free_arg(arg);
|
|
|
arg = alloc_arg();
|
|
@@ -2163,6 +2170,8 @@ process_fields(struct event_format *event, struct print_flag_sym **list, char **
|
|
|
if (value == NULL)
|
|
|
goto out_free;
|
|
|
field->str = strdup(value);
|
|
|
+ if (field->str == NULL)
|
|
|
+ goto out_free;
|
|
|
free_arg(arg);
|
|
|
arg = NULL;
|
|
|
|
|
@@ -3433,6 +3442,9 @@ process_defined_func(struct trace_seq *s, void *data, int size,
|
|
|
string = malloc_or_die(sizeof(*string));
|
|
|
string->next = strings;
|
|
|
string->str = strdup(str.buffer);
|
|
|
+ if (!string->str)
|
|
|
+ die("malloc str");
|
|
|
+
|
|
|
strings = string;
|
|
|
trace_seq_destroy(&str);
|
|
|
break;
|
|
@@ -3571,6 +3583,8 @@ static struct print_arg *make_bprint_args(char *fmt, void *data, int size, struc
|
|
|
arg->next = NULL;
|
|
|
arg->type = PRINT_BSTRING;
|
|
|
arg->string.string = strdup(bptr);
|
|
|
+ if (!arg->string.string)
|
|
|
+ break;
|
|
|
bptr += strlen(bptr) + 1;
|
|
|
*next = arg;
|
|
|
next = &arg->next;
|
|
@@ -4666,6 +4680,8 @@ int pevent_parse_event(struct pevent *pevent,
|
|
|
die("failed to read event id");
|
|
|
|
|
|
event->system = strdup(sys);
|
|
|
+ if (!event->system)
|
|
|
+ die("failed to allocate system");
|
|
|
|
|
|
/* Add pevent to event so that it can be referenced */
|
|
|
event->pevent = pevent;
|
|
@@ -4707,6 +4723,10 @@ int pevent_parse_event(struct pevent *pevent,
|
|
|
list = &arg->next;
|
|
|
arg->type = PRINT_FIELD;
|
|
|
arg->field.name = strdup(field->name);
|
|
|
+ if (!arg->field.name) {
|
|
|
+ do_warning("failed to allocate field name");
|
|
|
+ goto event_failed;
|
|
|
+ }
|
|
|
arg->field.field = field;
|
|
|
}
|
|
|
return 0;
|
|
@@ -5050,6 +5070,11 @@ int pevent_register_event_handler(struct pevent *pevent,
|
|
|
if (sys_name)
|
|
|
handle->sys_name = strdup(sys_name);
|
|
|
|
|
|
+ if ((event_name && !handle->event_name) ||
|
|
|
+ (sys_name && !handle->sys_name)) {
|
|
|
+ die("Failed to allocate event/sys name");
|
|
|
+ }
|
|
|
+
|
|
|
handle->func = func;
|
|
|
handle->next = pevent->handlers;
|
|
|
pevent->handlers = handle;
|