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>
Wed, 5 Feb 2020 23:39:37 +0000 (18:39 -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 05f20f72de03309afda2add9c268a9d934fbe77f..959b38bc29b022ea18e9397a26bd49e82aba375c 100644 (file)
@@ -137,7 +137,7 @@ static int parse_probe_opts(struct lttng_event *ev, char *opt)
        }
 
        /* 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) {
This page took 0.027247 seconds and 4 git commands to generate.