All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH lttng-tools v2] Fix: error out on leftover arguments
       [not found] <1519250256-32693-1-git-send-email-jdesfossez@efficios.com>
@ 2018-02-27 16:15 ` Jérémie Galarneau
  0 siblings, 0 replies; 2+ messages in thread
From: Jérémie Galarneau @ 2018-02-27 16:15 UTC (permalink / raw)
  To: Julien Desfossez; +Cc: lttng-dev, jgalar

Merged in master, stable-2.10, and stable-2.9.

Thanks,
Jérémie

On Wed, Feb 21, 2018 at 04:57:36PM -0500, Julien Desfossez wrote:
> All the commands currently ignore leftover arguments, this can lead to
> wrong usage of the commands and waste of time debugging. For example,
> this command enables the vpid context on all channels instead of only on
> the "mychan" channel:
> $ lttng add-context -u mychan -t vpid
> 
> The correct usage is:
> $ lttng add-context -u -c mychan -t vpid
> 
> We now output an error on leftover arguments:
> $ lttng add-context -u mychan -t vpid
> Error: Unknown argument: mychan
> Error: Command error
> 
> Some commands accept one leftover argument (create, start, stop,
> destroy), so we check if there are other leftovers:
> $ lttng create mysess allo
> Error: Unknown argument: allo
> Error: Command error
> 
> Only the snapshot command is not handled since it has a second level of
> command and does not consume the popt arguments.
> 
> Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
> ---
>  src/bin/lttng/commands/add_context.c      | 8 ++++++++
>  src/bin/lttng/commands/create.c           | 8 ++++++++
>  src/bin/lttng/commands/destroy.c          | 9 +++++++++
>  src/bin/lttng/commands/disable_channels.c | 8 ++++++++
>  src/bin/lttng/commands/disable_events.c   | 8 ++++++++
>  src/bin/lttng/commands/enable_channels.c  | 9 +++++++++
>  src/bin/lttng/commands/enable_events.c    | 8 ++++++++
>  src/bin/lttng/commands/list.c             | 9 ++++++++-
>  src/bin/lttng/commands/load.c             | 8 ++++++++
>  src/bin/lttng/commands/save.c             | 9 ++++++++-
>  src/bin/lttng/commands/start.c            | 8 ++++++++
>  src/bin/lttng/commands/stop.c             | 8 ++++++++
>  src/bin/lttng/commands/view.c             | 8 ++++++++
>  13 files changed, 106 insertions(+), 2 deletions(-)
> 
> diff --git a/src/bin/lttng/commands/add_context.c b/src/bin/lttng/commands/add_context.c
> index 209a9f4..d9121b0 100644
> --- a/src/bin/lttng/commands/add_context.c
> +++ b/src/bin/lttng/commands/add_context.c
> @@ -898,6 +898,7 @@ int cmd_add_context(int argc, const char **argv)
>  	static poptContext pc;
>  	struct ctx_type *type, *tmptype;
>  	char *session_name = NULL;
> +	const char *leftover = NULL;
>  
>  	if (argc < 2) {
>  		ret = CMD_ERROR;
> @@ -944,6 +945,13 @@ int cmd_add_context(int argc, const char **argv)
>  		}
>  	}
>  
> +	leftover = poptGetArg(pc);
> +	if (leftover) {
> +		ERR("Unknown argument: %s", leftover);
> +		ret = CMD_ERROR;
> +		goto end;
> +	}
> +
>  	ret = print_missing_or_multiple_domains(opt_kernel + opt_userspace +
>  			opt_jul + opt_log4j);
>  	if (ret) {
> diff --git a/src/bin/lttng/commands/create.c b/src/bin/lttng/commands/create.c
> index d075f64..faf9f3e 100644
> --- a/src/bin/lttng/commands/create.c
> +++ b/src/bin/lttng/commands/create.c
> @@ -625,6 +625,7 @@ int cmd_create(int argc, const char **argv)
>  {
>  	int opt, ret = CMD_SUCCESS, command_ret = CMD_SUCCESS, success = 1;
>  	char *opt_arg = NULL;
> +	const char *leftover = NULL;
>  	static poptContext pc;
>  
>  	pc = poptGetContext(NULL, argc, argv, long_options, 0);
> @@ -719,6 +720,13 @@ int cmd_create(int argc, const char **argv)
>  	}
>  	opt_session_name = (char*) poptGetArg(pc);
>  
> +	leftover = poptGetArg(pc);
> +	if (leftover) {
> +		ERR("Unknown argument: %s", leftover);
> +		ret = CMD_ERROR;
> +		goto end;
> +	}
> +
>  	command_ret = create_session();
>  	if (command_ret) {
>  		success = 0;
> diff --git a/src/bin/lttng/commands/destroy.c b/src/bin/lttng/commands/destroy.c
> index 02c7139..6878aaa 100644
> --- a/src/bin/lttng/commands/destroy.c
> +++ b/src/bin/lttng/commands/destroy.c
> @@ -174,6 +174,7 @@ int cmd_destroy(int argc, const char **argv)
>  	int ret = CMD_SUCCESS , i, command_ret = CMD_SUCCESS, success = 1;
>  	static poptContext pc;
>  	char *session_name = NULL;
> +	const char *leftover = NULL;
>  
>  	struct lttng_session *sessions;
>  	int count;
> @@ -280,6 +281,14 @@ int cmd_destroy(int argc, const char **argv)
>  		}
>  	}
>  
> +	leftover = poptGetArg(pc);
> +	if (leftover) {
> +		ERR("Unknown argument: %s", leftover);
> +		ret = CMD_ERROR;
> +		success = 0;
> +		goto mi_closing;
> +	}
> +
>  mi_closing:
>  	/* Mi closing */
>  	if (lttng_opt_mi) {
> diff --git a/src/bin/lttng/commands/disable_channels.c b/src/bin/lttng/commands/disable_channels.c
> index 775ff89..936884e 100644
> --- a/src/bin/lttng/commands/disable_channels.c
> +++ b/src/bin/lttng/commands/disable_channels.c
> @@ -216,6 +216,7 @@ int cmd_disable_channels(int argc, const char **argv)
>  	int opt, ret = CMD_SUCCESS, command_ret = CMD_SUCCESS, success = 1;
>  	static poptContext pc;
>  	char *session_name = NULL;
> +	const char *leftover = NULL;
>  
>  	pc = poptGetContext(NULL, argc, argv, long_options, 0);
>  	poptReadDefaultConfig(pc, 0);
> @@ -250,6 +251,13 @@ int cmd_disable_channels(int argc, const char **argv)
>  		goto end;
>  	}
>  
> +	leftover = poptGetArg(pc);
> +	if (leftover) {
> +		ERR("Unknown argument: %s", leftover);
> +		ret = CMD_ERROR;
> +		goto end;
> +	}
> +
>  	if (!opt_session_name) {
>  		session_name = get_session_name();
>  		if (session_name == NULL) {
> diff --git a/src/bin/lttng/commands/disable_events.c b/src/bin/lttng/commands/disable_events.c
> index 2696201..290e727 100644
> --- a/src/bin/lttng/commands/disable_events.c
> +++ b/src/bin/lttng/commands/disable_events.c
> @@ -328,6 +328,7 @@ int cmd_disable_events(int argc, const char **argv)
>  	int opt, ret = CMD_SUCCESS, command_ret = CMD_SUCCESS, success = 1;
>  	static poptContext pc;
>  	char *session_name = NULL;
> +	const char *leftover = NULL;
>  	int event_type = -1;
>  
>  	pc = poptGetContext(NULL, argc, argv, long_options, 0);
> @@ -398,6 +399,13 @@ int cmd_disable_events(int argc, const char **argv)
>  		goto end;
>  	}
>  
> +	leftover = poptGetArg(pc);
> +	if (leftover) {
> +		ERR("Unknown argument: %s", leftover);
> +		ret = CMD_ERROR;
> +		goto end;
> +	}
> +
>  	if (!opt_session_name) {
>  		session_name = get_session_name();
>  		if (session_name == NULL) {
> diff --git a/src/bin/lttng/commands/enable_channels.c b/src/bin/lttng/commands/enable_channels.c
> index cb9f44a..9c84d02 100644
> --- a/src/bin/lttng/commands/enable_channels.c
> +++ b/src/bin/lttng/commands/enable_channels.c
> @@ -400,6 +400,7 @@ int cmd_enable_channels(int argc, const char **argv)
>  	static poptContext pc;
>  	char *session_name = NULL;
>  	char *opt_arg = NULL;
> +	const char *leftover = NULL;
>  
>  	init_channel_config();
>  
> @@ -693,6 +694,14 @@ int cmd_enable_channels(int argc, const char **argv)
>  		goto mi_closing;
>  	}
>  
> +	leftover = poptGetArg(pc);
> +	if (leftover) {
> +		ERR("Unknown argument: %s", leftover);
> +		ret = CMD_ERROR;
> +		success = 0;
> +		goto mi_closing;
> +	}
> +
>  	if (!opt_session_name) {
>  		session_name = get_session_name();
>  		if (session_name == NULL) {
> diff --git a/src/bin/lttng/commands/enable_events.c b/src/bin/lttng/commands/enable_events.c
> index 97a36b3..05f20f7 100644
> --- a/src/bin/lttng/commands/enable_events.c
> +++ b/src/bin/lttng/commands/enable_events.c
> @@ -1264,6 +1264,7 @@ int cmd_enable_events(int argc, const char **argv)
>  	int opt, ret = CMD_SUCCESS, command_ret = CMD_SUCCESS, success = 1;
>  	static poptContext pc;
>  	char *session_name = NULL;
> +	const char *leftover = NULL;
>  	int event_type = -1;
>  
>  	pc = poptGetContext(NULL, argc, argv, long_options, 0);
> @@ -1363,6 +1364,13 @@ int cmd_enable_events(int argc, const char **argv)
>  		goto end;
>  	}
>  
> +	leftover = poptGetArg(pc);
> +	if (leftover) {
> +		ERR("Unknown argument: %s", leftover);
> +		ret = CMD_ERROR;
> +		goto end;
> +	}
> +
>  	if (!opt_session_name) {
>  		session_name = get_session_name();
>  		if (session_name == NULL) {
> diff --git a/src/bin/lttng/commands/list.c b/src/bin/lttng/commands/list.c
> index a166fd2..898c0de 100644
> --- a/src/bin/lttng/commands/list.c
> +++ b/src/bin/lttng/commands/list.c
> @@ -1776,7 +1776,7 @@ end:
>  int cmd_list(int argc, const char **argv)
>  {
>  	int opt, ret = CMD_SUCCESS;
> -	const char *session_name;
> +	const char *session_name, *leftover = NULL;
>  	static poptContext pc;
>  	struct lttng_domain domain;
>  	struct lttng_domain *domains = NULL;
> @@ -1837,6 +1837,13 @@ int cmd_list(int argc, const char **argv)
>  	session_name = poptGetArg(pc);
>  	DBG2("Session name: %s", session_name);
>  
> +	leftover = poptGetArg(pc);
> +	if (leftover) {
> +		ERR("Unknown argument: %s", leftover);
> +		ret = CMD_ERROR;
> +		goto end;
> +	}
> +
>  	if (opt_kernel) {
>  		domain.type = LTTNG_DOMAIN_KERNEL;
>  	} else if (opt_userspace) {
> diff --git a/src/bin/lttng/commands/load.c b/src/bin/lttng/commands/load.c
> index ad61849..07ef121 100644
> --- a/src/bin/lttng/commands/load.c
> +++ b/src/bin/lttng/commands/load.c
> @@ -163,6 +163,7 @@ int cmd_load(int argc, const char **argv)
>  	poptContext pc;
>  	struct lttng_load_session_attr *session_attr = NULL;
>  	char *input_path = NULL;
> +	const char *leftover = NULL;
>  
>  	pc = poptGetContext(NULL, argc, argv, load_opts, 0);
>  	poptReadDefaultConfig(pc, 0);
> @@ -206,6 +207,13 @@ int cmd_load(int argc, const char **argv)
>  		}
>  	}
>  
> +	leftover = poptGetArg(pc);
> +	if (leftover) {
> +		ERR("Unknown argument: %s", leftover);
> +		ret = CMD_ERROR;
> +		goto end;
> +	}
> +
>  	/* Mi check */
>  	if (lttng_opt_mi) {
>  		writer = mi_lttng_writer_create(fileno(stdout), lttng_opt_mi);
> diff --git a/src/bin/lttng/commands/save.c b/src/bin/lttng/commands/save.c
> index 4ba9024..924ddcb 100644
> --- a/src/bin/lttng/commands/save.c
> +++ b/src/bin/lttng/commands/save.c
> @@ -127,7 +127,7 @@ int cmd_save(int argc, const char **argv)
>  {
>  	int ret = CMD_SUCCESS, command_ret = CMD_SUCCESS, success;
>  	int opt;
> -	const char *session_name = NULL;
> +	const char *session_name = NULL, *leftover = NULL;
>  	poptContext pc;
>  	struct lttng_save_session_attr *attr;
>  
> @@ -164,6 +164,13 @@ int cmd_save(int argc, const char **argv)
>  		}
>  	}
>  
> +	leftover = poptGetArg(pc);
> +	if (leftover) {
> +		ERR("Unknown argument: %s", leftover);
> +		ret = CMD_ERROR;
> +		goto end;
> +	}
> +
>  	attr = lttng_save_session_attr_create();
>  	if (!attr) {
>  		ret = CMD_FATAL;
> diff --git a/src/bin/lttng/commands/start.c b/src/bin/lttng/commands/start.c
> index 0287fc7..65b2229 100644
> --- a/src/bin/lttng/commands/start.c
> +++ b/src/bin/lttng/commands/start.c
> @@ -144,6 +144,7 @@ int cmd_start(int argc, const char **argv)
>  {
>  	int opt, ret = CMD_SUCCESS, command_ret = CMD_SUCCESS, success = 1;
>  	static poptContext pc;
> +	const char *leftover = NULL;
>  
>  	pc = poptGetContext(NULL, argc, argv, long_options, 0);
>  	poptReadDefaultConfig(pc, 0);
> @@ -164,6 +165,13 @@ int cmd_start(int argc, const char **argv)
>  
>  	opt_session_name = (char*) poptGetArg(pc);
>  
> +	leftover = poptGetArg(pc);
> +	if (leftover) {
> +		ERR("Unknown argument: %s", leftover);
> +		ret = CMD_ERROR;
> +		goto end;
> +	}
> +
>  	/* Mi check */
>  	if (lttng_opt_mi) {
>  		writer = mi_lttng_writer_create(fileno(stdout), lttng_opt_mi);
> diff --git a/src/bin/lttng/commands/stop.c b/src/bin/lttng/commands/stop.c
> index 336d887..9d211d6 100644
> --- a/src/bin/lttng/commands/stop.c
> +++ b/src/bin/lttng/commands/stop.c
> @@ -172,6 +172,7 @@ int cmd_stop(int argc, const char **argv)
>  {
>  	int opt, ret = CMD_SUCCESS, command_ret = CMD_SUCCESS, success = 1;
>  	static poptContext pc;
> +	const char *leftover = NULL;
>  
>  	pc = poptGetContext(NULL, argc, argv, long_options, 0);
>  	poptReadDefaultConfig(pc, 0);
> @@ -228,6 +229,13 @@ int cmd_stop(int argc, const char **argv)
>  
>  	opt_session_name = (char*) poptGetArg(pc);
>  
> +	leftover = poptGetArg(pc);
> +	if (leftover) {
> +		ERR("Unknown argument: %s", leftover);
> +		ret = CMD_ERROR;
> +		goto end;
> +	}
> +
>  	command_ret = stop_tracing();
>  	if (command_ret) {
>  		success = 0;
> diff --git a/src/bin/lttng/commands/view.c b/src/bin/lttng/commands/view.c
> index c9a5fdc..faca60d 100644
> --- a/src/bin/lttng/commands/view.c
> +++ b/src/bin/lttng/commands/view.c
> @@ -415,6 +415,7 @@ int cmd_view(int argc, const char **argv)
>  {
>  	int opt, ret = CMD_SUCCESS;
>  	static poptContext pc;
> +	const char *leftover = NULL;
>  
>  	pc = poptGetContext(NULL, argc, argv, long_options, 0);
>  	poptReadDefaultConfig(pc, 0);
> @@ -439,6 +440,13 @@ int cmd_view(int argc, const char **argv)
>  
>  	opt_session_name = (char*) poptGetArg(pc);
>  
> +	leftover = poptGetArg(pc);
> +	if (leftover) {
> +		ERR("Unknown argument: %s", leftover);
> +		ret = CMD_ERROR;
> +		goto end;
> +	}
> +
>  	ret = view_trace();
>  
>  end:
> -- 
> 2.7.4
> 
_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [PATCH lttng-tools v2] Fix: error out on leftover arguments
@ 2018-02-21 21:57 Julien Desfossez
  0 siblings, 0 replies; 2+ messages in thread
From: Julien Desfossez @ 2018-02-21 21:57 UTC (permalink / raw)
  To: jgalar; +Cc: lttng-dev

All the commands currently ignore leftover arguments, this can lead to
wrong usage of the commands and waste of time debugging. For example,
this command enables the vpid context on all channels instead of only on
the "mychan" channel:
$ lttng add-context -u mychan -t vpid

The correct usage is:
$ lttng add-context -u -c mychan -t vpid

We now output an error on leftover arguments:
$ lttng add-context -u mychan -t vpid
Error: Unknown argument: mychan
Error: Command error

Some commands accept one leftover argument (create, start, stop,
destroy), so we check if there are other leftovers:
$ lttng create mysess allo
Error: Unknown argument: allo
Error: Command error

Only the snapshot command is not handled since it has a second level of
command and does not consume the popt arguments.

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
---
 src/bin/lttng/commands/add_context.c      | 8 ++++++++
 src/bin/lttng/commands/create.c           | 8 ++++++++
 src/bin/lttng/commands/destroy.c          | 9 +++++++++
 src/bin/lttng/commands/disable_channels.c | 8 ++++++++
 src/bin/lttng/commands/disable_events.c   | 8 ++++++++
 src/bin/lttng/commands/enable_channels.c  | 9 +++++++++
 src/bin/lttng/commands/enable_events.c    | 8 ++++++++
 src/bin/lttng/commands/list.c             | 9 ++++++++-
 src/bin/lttng/commands/load.c             | 8 ++++++++
 src/bin/lttng/commands/save.c             | 9 ++++++++-
 src/bin/lttng/commands/start.c            | 8 ++++++++
 src/bin/lttng/commands/stop.c             | 8 ++++++++
 src/bin/lttng/commands/view.c             | 8 ++++++++
 13 files changed, 106 insertions(+), 2 deletions(-)

diff --git a/src/bin/lttng/commands/add_context.c b/src/bin/lttng/commands/add_context.c
index 209a9f4..d9121b0 100644
--- a/src/bin/lttng/commands/add_context.c
+++ b/src/bin/lttng/commands/add_context.c
@@ -898,6 +898,7 @@ int cmd_add_context(int argc, const char **argv)
 	static poptContext pc;
 	struct ctx_type *type, *tmptype;
 	char *session_name = NULL;
+	const char *leftover = NULL;
 
 	if (argc < 2) {
 		ret = CMD_ERROR;
@@ -944,6 +945,13 @@ int cmd_add_context(int argc, const char **argv)
 		}
 	}
 
+	leftover = poptGetArg(pc);
+	if (leftover) {
+		ERR("Unknown argument: %s", leftover);
+		ret = CMD_ERROR;
+		goto end;
+	}
+
 	ret = print_missing_or_multiple_domains(opt_kernel + opt_userspace +
 			opt_jul + opt_log4j);
 	if (ret) {
diff --git a/src/bin/lttng/commands/create.c b/src/bin/lttng/commands/create.c
index d075f64..faf9f3e 100644
--- a/src/bin/lttng/commands/create.c
+++ b/src/bin/lttng/commands/create.c
@@ -625,6 +625,7 @@ int cmd_create(int argc, const char **argv)
 {
 	int opt, ret = CMD_SUCCESS, command_ret = CMD_SUCCESS, success = 1;
 	char *opt_arg = NULL;
+	const char *leftover = NULL;
 	static poptContext pc;
 
 	pc = poptGetContext(NULL, argc, argv, long_options, 0);
@@ -719,6 +720,13 @@ int cmd_create(int argc, const char **argv)
 	}
 	opt_session_name = (char*) poptGetArg(pc);
 
+	leftover = poptGetArg(pc);
+	if (leftover) {
+		ERR("Unknown argument: %s", leftover);
+		ret = CMD_ERROR;
+		goto end;
+	}
+
 	command_ret = create_session();
 	if (command_ret) {
 		success = 0;
diff --git a/src/bin/lttng/commands/destroy.c b/src/bin/lttng/commands/destroy.c
index 02c7139..6878aaa 100644
--- a/src/bin/lttng/commands/destroy.c
+++ b/src/bin/lttng/commands/destroy.c
@@ -174,6 +174,7 @@ int cmd_destroy(int argc, const char **argv)
 	int ret = CMD_SUCCESS , i, command_ret = CMD_SUCCESS, success = 1;
 	static poptContext pc;
 	char *session_name = NULL;
+	const char *leftover = NULL;
 
 	struct lttng_session *sessions;
 	int count;
@@ -280,6 +281,14 @@ int cmd_destroy(int argc, const char **argv)
 		}
 	}
 
+	leftover = poptGetArg(pc);
+	if (leftover) {
+		ERR("Unknown argument: %s", leftover);
+		ret = CMD_ERROR;
+		success = 0;
+		goto mi_closing;
+	}
+
 mi_closing:
 	/* Mi closing */
 	if (lttng_opt_mi) {
diff --git a/src/bin/lttng/commands/disable_channels.c b/src/bin/lttng/commands/disable_channels.c
index 775ff89..936884e 100644
--- a/src/bin/lttng/commands/disable_channels.c
+++ b/src/bin/lttng/commands/disable_channels.c
@@ -216,6 +216,7 @@ int cmd_disable_channels(int argc, const char **argv)
 	int opt, ret = CMD_SUCCESS, command_ret = CMD_SUCCESS, success = 1;
 	static poptContext pc;
 	char *session_name = NULL;
+	const char *leftover = NULL;
 
 	pc = poptGetContext(NULL, argc, argv, long_options, 0);
 	poptReadDefaultConfig(pc, 0);
@@ -250,6 +251,13 @@ int cmd_disable_channels(int argc, const char **argv)
 		goto end;
 	}
 
+	leftover = poptGetArg(pc);
+	if (leftover) {
+		ERR("Unknown argument: %s", leftover);
+		ret = CMD_ERROR;
+		goto end;
+	}
+
 	if (!opt_session_name) {
 		session_name = get_session_name();
 		if (session_name == NULL) {
diff --git a/src/bin/lttng/commands/disable_events.c b/src/bin/lttng/commands/disable_events.c
index 2696201..290e727 100644
--- a/src/bin/lttng/commands/disable_events.c
+++ b/src/bin/lttng/commands/disable_events.c
@@ -328,6 +328,7 @@ int cmd_disable_events(int argc, const char **argv)
 	int opt, ret = CMD_SUCCESS, command_ret = CMD_SUCCESS, success = 1;
 	static poptContext pc;
 	char *session_name = NULL;
+	const char *leftover = NULL;
 	int event_type = -1;
 
 	pc = poptGetContext(NULL, argc, argv, long_options, 0);
@@ -398,6 +399,13 @@ int cmd_disable_events(int argc, const char **argv)
 		goto end;
 	}
 
+	leftover = poptGetArg(pc);
+	if (leftover) {
+		ERR("Unknown argument: %s", leftover);
+		ret = CMD_ERROR;
+		goto end;
+	}
+
 	if (!opt_session_name) {
 		session_name = get_session_name();
 		if (session_name == NULL) {
diff --git a/src/bin/lttng/commands/enable_channels.c b/src/bin/lttng/commands/enable_channels.c
index cb9f44a..9c84d02 100644
--- a/src/bin/lttng/commands/enable_channels.c
+++ b/src/bin/lttng/commands/enable_channels.c
@@ -400,6 +400,7 @@ int cmd_enable_channels(int argc, const char **argv)
 	static poptContext pc;
 	char *session_name = NULL;
 	char *opt_arg = NULL;
+	const char *leftover = NULL;
 
 	init_channel_config();
 
@@ -693,6 +694,14 @@ int cmd_enable_channels(int argc, const char **argv)
 		goto mi_closing;
 	}
 
+	leftover = poptGetArg(pc);
+	if (leftover) {
+		ERR("Unknown argument: %s", leftover);
+		ret = CMD_ERROR;
+		success = 0;
+		goto mi_closing;
+	}
+
 	if (!opt_session_name) {
 		session_name = get_session_name();
 		if (session_name == NULL) {
diff --git a/src/bin/lttng/commands/enable_events.c b/src/bin/lttng/commands/enable_events.c
index 97a36b3..05f20f7 100644
--- a/src/bin/lttng/commands/enable_events.c
+++ b/src/bin/lttng/commands/enable_events.c
@@ -1264,6 +1264,7 @@ int cmd_enable_events(int argc, const char **argv)
 	int opt, ret = CMD_SUCCESS, command_ret = CMD_SUCCESS, success = 1;
 	static poptContext pc;
 	char *session_name = NULL;
+	const char *leftover = NULL;
 	int event_type = -1;
 
 	pc = poptGetContext(NULL, argc, argv, long_options, 0);
@@ -1363,6 +1364,13 @@ int cmd_enable_events(int argc, const char **argv)
 		goto end;
 	}
 
+	leftover = poptGetArg(pc);
+	if (leftover) {
+		ERR("Unknown argument: %s", leftover);
+		ret = CMD_ERROR;
+		goto end;
+	}
+
 	if (!opt_session_name) {
 		session_name = get_session_name();
 		if (session_name == NULL) {
diff --git a/src/bin/lttng/commands/list.c b/src/bin/lttng/commands/list.c
index a166fd2..898c0de 100644
--- a/src/bin/lttng/commands/list.c
+++ b/src/bin/lttng/commands/list.c
@@ -1776,7 +1776,7 @@ end:
 int cmd_list(int argc, const char **argv)
 {
 	int opt, ret = CMD_SUCCESS;
-	const char *session_name;
+	const char *session_name, *leftover = NULL;
 	static poptContext pc;
 	struct lttng_domain domain;
 	struct lttng_domain *domains = NULL;
@@ -1837,6 +1837,13 @@ int cmd_list(int argc, const char **argv)
 	session_name = poptGetArg(pc);
 	DBG2("Session name: %s", session_name);
 
+	leftover = poptGetArg(pc);
+	if (leftover) {
+		ERR("Unknown argument: %s", leftover);
+		ret = CMD_ERROR;
+		goto end;
+	}
+
 	if (opt_kernel) {
 		domain.type = LTTNG_DOMAIN_KERNEL;
 	} else if (opt_userspace) {
diff --git a/src/bin/lttng/commands/load.c b/src/bin/lttng/commands/load.c
index ad61849..07ef121 100644
--- a/src/bin/lttng/commands/load.c
+++ b/src/bin/lttng/commands/load.c
@@ -163,6 +163,7 @@ int cmd_load(int argc, const char **argv)
 	poptContext pc;
 	struct lttng_load_session_attr *session_attr = NULL;
 	char *input_path = NULL;
+	const char *leftover = NULL;
 
 	pc = poptGetContext(NULL, argc, argv, load_opts, 0);
 	poptReadDefaultConfig(pc, 0);
@@ -206,6 +207,13 @@ int cmd_load(int argc, const char **argv)
 		}
 	}
 
+	leftover = poptGetArg(pc);
+	if (leftover) {
+		ERR("Unknown argument: %s", leftover);
+		ret = CMD_ERROR;
+		goto end;
+	}
+
 	/* Mi check */
 	if (lttng_opt_mi) {
 		writer = mi_lttng_writer_create(fileno(stdout), lttng_opt_mi);
diff --git a/src/bin/lttng/commands/save.c b/src/bin/lttng/commands/save.c
index 4ba9024..924ddcb 100644
--- a/src/bin/lttng/commands/save.c
+++ b/src/bin/lttng/commands/save.c
@@ -127,7 +127,7 @@ int cmd_save(int argc, const char **argv)
 {
 	int ret = CMD_SUCCESS, command_ret = CMD_SUCCESS, success;
 	int opt;
-	const char *session_name = NULL;
+	const char *session_name = NULL, *leftover = NULL;
 	poptContext pc;
 	struct lttng_save_session_attr *attr;
 
@@ -164,6 +164,13 @@ int cmd_save(int argc, const char **argv)
 		}
 	}
 
+	leftover = poptGetArg(pc);
+	if (leftover) {
+		ERR("Unknown argument: %s", leftover);
+		ret = CMD_ERROR;
+		goto end;
+	}
+
 	attr = lttng_save_session_attr_create();
 	if (!attr) {
 		ret = CMD_FATAL;
diff --git a/src/bin/lttng/commands/start.c b/src/bin/lttng/commands/start.c
index 0287fc7..65b2229 100644
--- a/src/bin/lttng/commands/start.c
+++ b/src/bin/lttng/commands/start.c
@@ -144,6 +144,7 @@ int cmd_start(int argc, const char **argv)
 {
 	int opt, ret = CMD_SUCCESS, command_ret = CMD_SUCCESS, success = 1;
 	static poptContext pc;
+	const char *leftover = NULL;
 
 	pc = poptGetContext(NULL, argc, argv, long_options, 0);
 	poptReadDefaultConfig(pc, 0);
@@ -164,6 +165,13 @@ int cmd_start(int argc, const char **argv)
 
 	opt_session_name = (char*) poptGetArg(pc);
 
+	leftover = poptGetArg(pc);
+	if (leftover) {
+		ERR("Unknown argument: %s", leftover);
+		ret = CMD_ERROR;
+		goto end;
+	}
+
 	/* Mi check */
 	if (lttng_opt_mi) {
 		writer = mi_lttng_writer_create(fileno(stdout), lttng_opt_mi);
diff --git a/src/bin/lttng/commands/stop.c b/src/bin/lttng/commands/stop.c
index 336d887..9d211d6 100644
--- a/src/bin/lttng/commands/stop.c
+++ b/src/bin/lttng/commands/stop.c
@@ -172,6 +172,7 @@ int cmd_stop(int argc, const char **argv)
 {
 	int opt, ret = CMD_SUCCESS, command_ret = CMD_SUCCESS, success = 1;
 	static poptContext pc;
+	const char *leftover = NULL;
 
 	pc = poptGetContext(NULL, argc, argv, long_options, 0);
 	poptReadDefaultConfig(pc, 0);
@@ -228,6 +229,13 @@ int cmd_stop(int argc, const char **argv)
 
 	opt_session_name = (char*) poptGetArg(pc);
 
+	leftover = poptGetArg(pc);
+	if (leftover) {
+		ERR("Unknown argument: %s", leftover);
+		ret = CMD_ERROR;
+		goto end;
+	}
+
 	command_ret = stop_tracing();
 	if (command_ret) {
 		success = 0;
diff --git a/src/bin/lttng/commands/view.c b/src/bin/lttng/commands/view.c
index c9a5fdc..faca60d 100644
--- a/src/bin/lttng/commands/view.c
+++ b/src/bin/lttng/commands/view.c
@@ -415,6 +415,7 @@ int cmd_view(int argc, const char **argv)
 {
 	int opt, ret = CMD_SUCCESS;
 	static poptContext pc;
+	const char *leftover = NULL;
 
 	pc = poptGetContext(NULL, argc, argv, long_options, 0);
 	poptReadDefaultConfig(pc, 0);
@@ -439,6 +440,13 @@ int cmd_view(int argc, const char **argv)
 
 	opt_session_name = (char*) poptGetArg(pc);
 
+	leftover = poptGetArg(pc);
+	if (leftover) {
+		ERR("Unknown argument: %s", leftover);
+		ret = CMD_ERROR;
+		goto end;
+	}
+
 	ret = view_trace();
 
 end:
-- 
2.7.4

_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2018-02-27 16:15 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <1519250256-32693-1-git-send-email-jdesfossez@efficios.com>
2018-02-27 16:15 ` [PATCH lttng-tools v2] Fix: error out on leftover arguments Jérémie Galarneau
2018-02-21 21:57 Julien Desfossez

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.