X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=src%2Fbin%2Flttng%2Fcommands%2Fview.c;h=66e987d194ac4814cf44ae8ecd5d9b153040deb3;hb=3388f253ecdf6ce0d24c4ba677cf04ab07cce666;hp=de7211718dcd21b7c1eea9b093da26aa4dbd23f1;hpb=bb70fcdaecc46dc7f7fcdb2233f2671a2e5e9430;p=lttng-tools.git diff --git a/src/bin/lttng/commands/view.c b/src/bin/lttng/commands/view.c index de7211718..66e987d19 100644 --- a/src/bin/lttng/commands/view.c +++ b/src/bin/lttng/commands/view.c @@ -159,6 +159,9 @@ static char **alloc_argv_from_user_opts(char *opts, const char *trace_path) token = strtok(opts, " "); while (token != NULL) { argv[i] = strdup(token); + if (argv[i] == NULL) { + goto error; + } token = strtok(NULL, " "); i++; } @@ -169,6 +172,13 @@ static char **alloc_argv_from_user_opts(char *opts, const char *trace_path) return argv; error: + if (argv) { + for (i = 0; i < num_opts + 2; i++) { + free(argv[i]); + } + free(argv); + } + return NULL; } @@ -271,7 +281,7 @@ static int spawn_viewer(const char *trace_path) break; } - if (argv == NULL) { + if (argv == NULL || !viewer_bin) { ret = CMD_FATAL; goto error; } @@ -285,12 +295,12 @@ static int spawn_viewer(const char *trace_path) } else { PERROR("exec: %s", viewer_bin); } - free(argv); ret = CMD_FATAL; goto error; } error: + free(argv); return ret; }