Modified internal function parse_option_name() to return error and handle that error in function callers in case strdup() fails. Suggested-by: Namhyung Kim <namhyung@xxxxxxxxxx> Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@xxxxxxxxx> --- lib/traceevent/event-plugin.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/traceevent/event-plugin.c b/lib/traceevent/event-plugin.c index c11636ce..b97d0c7e 100644 --- a/lib/traceevent/event-plugin.c +++ b/lib/traceevent/event-plugin.c @@ -254,7 +254,7 @@ void tep_plugin_remove_options(struct tep_plugin_option *options) } } -static void parse_option_name(char **option, char **plugin) +static int parse_option_name(char **option, char **plugin) { char *p; @@ -265,8 +265,9 @@ static void parse_option_name(char **option, char **plugin) *p = '\0'; *option = strdup(p + 1); if (!*option) - return; + return -1; } + return 0; } static struct tep_plugin_option * @@ -325,7 +326,8 @@ int tep_plugin_add_option(const char *name, const char *val) if (!option_str) return -ENOMEM; - parse_option_name(&option_str, &plugin); + if (parse_option_name(&option_str, &plugin) < 0) + return -ENOMEM; /* If the option exists, update the val */ for (op = trace_plugin_options; op; op = op->next) { -- 2.26.2