Fix: lttng: placing probe on symbol starting with `_`
authorFrancis Deslauriers <francis.deslauriers@efficios.com>
Fri, 17 Jan 2020 17:45:51 +0000 (12:45 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 17 Jan 2020 18:58:43 +0000 (13:58 -0500)
Issue
=====
The lttng CLI tool does not parse `--probe` symbol name properly if the
name has an underscore at the beginning.
For example, the following command fails
  lttng enable-event -k --probe _do_fork my_do_fork_event

This happens because the `parse_probe_opts()` function looks if the
first character of the symbol field is an alphabetic character to
determine if a symbol was provided. The problem is that some kernel
symbols such as `_do_fork` start with an underscore.

Solution
========
check if the first character is an alphabetic character OR an
underscore.

Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Change-Id: I3ee6c26641ceee508ee78e895d372c6b09fe90fb
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/bin/lttng/commands/enable_events.c

index 6889b63d73eb12cacc8db055c4bd0d2a0bcc1fd1..84bcb20814233c8928a53b9fd8e1d93e88b453d5 100644 (file)
@@ -143,7 +143,7 @@ static int parse_probe_opts(struct lttng_event *ev, char *opt)
        }
 
        /* Check for symbol */
        }
 
        /* Check for symbol */
-       if (isalpha(name[0])) {
+       if (isalpha(name[0]) || name[0] == '_') {
                match = sscanf(opt, "%" LTTNG_SYMBOL_NAME_LEN_SCANF_IS_A_BROKEN_API "s",
                        name);
                if (match == 1) {
                match = sscanf(opt, "%" LTTNG_SYMBOL_NAME_LEN_SCANF_IS_A_BROKEN_API "s",
                        name);
                if (match == 1) {
This page took 0.025604 seconds and 4 git commands to generate.