diff options
Diffstat (limited to 'tools/lib/traceevent/event-plugin.c')
| -rw-r--r-- | tools/lib/traceevent/event-plugin.c | 24 | 
1 files changed, 9 insertions, 15 deletions
diff --git a/tools/lib/traceevent/event-plugin.c b/tools/lib/traceevent/event-plugin.c index a16756ae3526..d542cb60ca1a 100644 --- a/tools/lib/traceevent/event-plugin.c +++ b/tools/lib/traceevent/event-plugin.c @@ -120,12 +120,12 @@ char **traceevent_plugin_list_options(void)  		for (op = reg->options; op->name; op++) {  			char *alias = op->plugin_alias ? op->plugin_alias : op->file;  			char **temp = list; +			int ret; -			name = malloc(strlen(op->name) + strlen(alias) + 2); -			if (!name) +			ret = asprintf(&name, "%s:%s", alias, op->name); +			if (ret < 0)  				goto err; -			sprintf(name, "%s:%s", alias, op->name);  			list = realloc(list, count + 2);  			if (!list) {  				list = temp; @@ -290,17 +290,14 @@ load_plugin(struct pevent *pevent, const char *path,  	const char *alias;  	char *plugin;  	void *handle; +	int ret; -	plugin = malloc(strlen(path) + strlen(file) + 2); -	if (!plugin) { +	ret = asprintf(&plugin, "%s/%s", path, file); +	if (ret < 0) {  		warning("could not allocate plugin memory\n");  		return;  	} -	strcpy(plugin, path); -	strcat(plugin, "/"); -	strcat(plugin, file); -  	handle = dlopen(plugin, RTLD_NOW | RTLD_GLOBAL);  	if (!handle) {  		warning("could not load plugin '%s'\n%s\n", @@ -391,6 +388,7 @@ load_plugins(struct pevent *pevent, const char *suffix,  	char *home;  	char *path;  	char *envdir; +	int ret;  	if (pevent->flags & PEVENT_DISABLE_PLUGINS)  		return; @@ -421,16 +419,12 @@ load_plugins(struct pevent *pevent, const char *suffix,  	if (!home)  		return; -	path = malloc(strlen(home) + strlen(LOCAL_PLUGIN_DIR) + 2); -	if (!path) { +	ret = asprintf(&path, "%s/%s", home, LOCAL_PLUGIN_DIR); +	if (ret < 0) {  		warning("could not allocate plugin memory\n");  		return;  	} -	strcpy(path, home); -	strcat(path, "/"); -	strcat(path, LOCAL_PLUGIN_DIR); -  	load_plugins_dir(pevent, suffix, path, load_plugin, data);  	free(path);  | 
