From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org,
Taeung Song <treeze.taeung@gmail.com>,
Jiri Olsa <jolsa@kernel.org>, Nambong Ha <over3025@gmail.com>,
Namhyung Kim <namhyung@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Wang Nan <wangnan0@huawei.com>, Wookje Kwon <aweee0@gmail.com>,
Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: [PATCH 08/15] perf config: Validate config variable arguments before trying use them
Date: Mon, 14 Nov 2016 22:38:40 -0300 [thread overview]
Message-ID: <1479173927-24613-9-git-send-email-acme@kernel.org> (raw)
In-Reply-To: <1479173927-24613-1-git-send-email-acme@kernel.org>
From: Taeung Song <treeze.taeung@gmail.com>
You can show the values for several config items as below:
# perf config report.queue-size call-graph.record-mode
but it is necessary to more precisely check arguments, before passing
them to show_spec_config(). This validation function would be also used
when parsing config key-value pairs arguments in the near future.
Committer notes:
Testing it:
$ perf config bla.
The config variable does not contain a variable name: bla.
$ perf config .bla
The config variable does not contain a section name: .bla
$ perf config bla.bla
$
Signed-off-by: Taeung Song <treeze.taeung@gmail.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Nambong Ha <over3025@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Cc: Wookje Kwon <aweee0@gmail.com>
Link: http://lkml.kernel.org/r/1478241862-31230-4-git-send-email-treeze.taeung@gmail.com
[ Fix some spelling errors ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-config.c | 45 +++++++++++++++++++++++++++++++++++++++++----
1 file changed, 41 insertions(+), 4 deletions(-)
diff --git a/tools/perf/builtin-config.c b/tools/perf/builtin-config.c
index df3fa1c18e55..88a43fe4963c 100644
--- a/tools/perf/builtin-config.c
+++ b/tools/perf/builtin-config.c
@@ -82,6 +82,27 @@ static int show_config(struct perf_config_set *set)
return 0;
}
+static int parse_config_arg(char *arg, char **var)
+{
+ const char *last_dot = strchr(arg, '.');
+
+ /*
+ * Since "var" actually contains the section name and the real
+ * config variable name separated by a dot, we have to know where the dot is.
+ */
+ if (last_dot == NULL || last_dot == arg) {
+ pr_err("The config variable does not contain a section name: %s\n", arg);
+ return -1;
+ }
+ if (!last_dot[1]) {
+ pr_err("The config variable does not contain a variable name: %s\n", arg);
+ return -1;
+ }
+
+ *var = arg;
+ return 0;
+}
+
int cmd_config(int argc, const char **argv, const char *prefix __maybe_unused)
{
int i, ret = 0;
@@ -130,10 +151,26 @@ int cmd_config(int argc, const char **argv, const char *prefix __maybe_unused)
}
break;
default:
- if (argc)
- for (i = 0; argv[i]; i++)
- ret = show_spec_config(set, argv[i]);
- else
+ if (argc) {
+ for (i = 0; argv[i]; i++) {
+ char *var, *arg = strdup(argv[i]);
+
+ if (!arg) {
+ pr_err("%s: strdup failed\n", __func__);
+ ret = -1;
+ break;
+ }
+
+ if (parse_config_arg(arg, &var) < 0) {
+ free(arg);
+ ret = -1;
+ break;
+ }
+
+ ret = show_spec_config(set, var);
+ free(arg);
+ }
+ } else
usage_with_options(config_usage, config_options);
}
--
2.7.4
next prev parent reply other threads:[~2016-11-15 1:41 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-15 1:38 [GIT PULL 00/15] perf/core improvements and fixes Arnaldo Carvalho de Melo
2016-11-15 1:38 ` [PATCH 01/15] perf callchain: Fixup help/config for no-unwinding Arnaldo Carvalho de Melo
2016-11-15 1:38 ` [PATCH 02/15] perf intel-pt: Update documentation about context switch events Arnaldo Carvalho de Melo
2016-11-15 1:38 ` [PATCH 03/15] tools build: Add CFLAGS_REMOVE_* support Arnaldo Carvalho de Melo
2016-11-15 1:38 ` [PATCH 04/15] tools build: Add jvmti feature detection support Arnaldo Carvalho de Melo
2016-11-15 1:38 ` [PATCH 05/15] perf jvmti: Plug compilation into perf build Arnaldo Carvalho de Melo
2016-11-15 1:38 ` [PATCH 06/15] perf kvmti: Remove unused Makefile file Arnaldo Carvalho de Melo
2016-11-15 1:38 ` [PATCH 07/15] perf config: Add support for getting config key-value pairs Arnaldo Carvalho de Melo
2016-11-15 1:38 ` Arnaldo Carvalho de Melo [this message]
2016-11-15 1:38 ` [PATCH 09/15] perf config: Add support setting variables in a config file Arnaldo Carvalho de Melo
2016-11-15 2:20 ` Taeung Song
2016-11-15 1:38 ` [PATCH 10/15] perf config: Mark where are config items from (user or system) Arnaldo Carvalho de Melo
2016-11-15 1:38 ` [PATCH 11/15] perf report: Add branch flag to callchain cursor node Arnaldo Carvalho de Melo
2016-11-15 1:38 ` [PATCH 12/15] perf report: Create a symbol_conf flag for showing branch flag counting Arnaldo Carvalho de Melo
2016-11-15 1:38 ` [PATCH 13/15] perf report: Calculate and return the " Arnaldo Carvalho de Melo
2016-11-15 1:38 ` [PATCH 14/15] perf report: Show branch info in callchain entry for stdio mode Arnaldo Carvalho de Melo
2016-11-15 1:38 ` [PATCH 15/15] perf report: Show branch info in callchain entry for browser mode Arnaldo Carvalho de Melo
2016-11-15 8:47 ` [GIT PULL 00/15] perf/core improvements and fixes Ingo Molnar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1479173927-24613-9-git-send-email-acme@kernel.org \
--to=acme@kernel.org \
--cc=acme@redhat.com \
--cc=aweee0@gmail.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=over3025@gmail.com \
--cc=peterz@infradead.org \
--cc=treeze.taeung@gmail.com \
--cc=wangnan0@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.