Issue
=====
At the moment, it's possible to have unknown options in the `track` and
`untrack` commands. They are silently ignored.
For example, the following command line is accepted without problem:
lttng untrack HELLO -k --all --pid
This was witnessed in the `test_event_tracker` tests. The
`lttng_track()` and `lttng_untrack() functions in `tests/utils/util.sh`
are currently passing the `$1` bash variable of the function to the
`track` and `untrack` througth their "$@" variable.
The commands should not silently accept those unknown options.
Fix
===
1. After looping on all the known options, check if there is any leftover
options and error out if it's the case.
2. Fix the `utils.sh` functions to that they don't pass the `$1` variable
to the commands.
Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Change-Id: I822ba09c8ce1ffa8366c586e760a9257e8078e43
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
enum cmd_error_code command_ret = CMD_SUCCESS;
static poptContext pc;
char *session_name = NULL;
+ const char *leftover = NULL;
struct mi_writer *writer = NULL;
if (argc < 1) {
session_name = opt_session_name;
}
+ 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);
function lttng_track()
{
local expected_to_fail="$1"
+ shift 1
local opts="$@"
$TESTDIR/../src/bin/lttng/$LTTNG_BIN track $opts >$OUTPUT_DEST
ret=$?
function lttng_untrack()
{
local expected_to_fail="$1"
+ shift 1
local opts="$@"
$TESTDIR/../src/bin/lttng/$LTTNG_BIN untrack $opts >$OUTPUT_DEST
ret=$?