linux-perf-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v1] perf parse-events: Avoid erange from hex numbers
@ 2023-09-07 21:05 Ian Rogers
  2023-10-06 15:29 ` Ian Rogers
  0 siblings, 1 reply; 4+ messages in thread
From: Ian Rogers @ 2023-09-07 21:05 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	Ian Rogers, Adrian Hunter, Rob Herring, linux-perf-users,
	linux-kernel

We specify that a "num_hex" comprises 1 or more digits, however, that
allows strtoull to fail with ERANGE. Limit the number of hex digits to
being between 1 and 16.

Before:
```
$ perf stat -e 'cpu/rE7574c47490475745/' true
perf: util/parse-events.c:215: fix_raw: Assertion `errno == 0' failed.
Aborted (core dumped)
```

After:
```
$ perf stat -e 'cpu/rE7574c47490475745/' true
event syntax error: 'cpu/rE7574c47490475745/'
                         \___ Bad event or PMU

Unable to find PMU or event on a PMU of 'cpu'

Initial error:
event syntax error: 'cpu/rE7574c47490475745/'
                         \___ unknown term 'rE7574c47490475745' for pmu 'cpu'

valid terms: event,pc,edge,offcore_rsp,ldlat,inv,umask,frontend,cmask,config,config1,config2,config3,name,period,percore,metric-id
Run 'perf list' for a list of valid events

 Usage: perf stat [<options>] [<command>]

    -e, --event <event>   event selector. use 'perf list' to list available events
```

Issue found through fuzz testing.

Signed-off-by: Ian Rogers <irogers@google.com>
---
 tools/perf/util/parse-events.l | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l
index 4ef4b6f171a0..f7df52b22c39 100644
--- a/tools/perf/util/parse-events.l
+++ b/tools/perf/util/parse-events.l
@@ -156,8 +156,8 @@ event_pmu	[^,{}/]+[/][^/]*[/][^,{}/]*
 event		[^,{}/]+
 
 num_dec		[0-9]+
-num_hex		0x[a-fA-F0-9]+
-num_raw_hex	[a-fA-F0-9]+
+num_hex		0x[a-fA-F0-9]{1,16}
+num_raw_hex	[a-fA-F0-9]{1,16}
 name		[a-zA-Z_*?\[\]][a-zA-Z0-9_*?.\[\]!\-]*
 name_tag	[\'][a-zA-Z_*?\[\]][a-zA-Z0-9_*?\-,\.\[\]:=]*[\']
 name_minus	[a-zA-Z_*?][a-zA-Z0-9\-_*?.:]*
-- 
2.42.0.283.g2d96d420d3-goog


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

* Re: [PATCH v1] perf parse-events: Avoid erange from hex numbers
  2023-09-07 21:05 [PATCH v1] perf parse-events: Avoid erange from hex numbers Ian Rogers
@ 2023-10-06 15:29 ` Ian Rogers
  2023-10-06 19:05   ` Namhyung Kim
  0 siblings, 1 reply; 4+ messages in thread
From: Ian Rogers @ 2023-10-06 15:29 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	Ian Rogers, Adrian Hunter, Rob Herring, linux-perf-users,
	linux-kernel

On Thu, Sep 7, 2023 at 2:05 PM Ian Rogers <irogers@google.com> wrote:
>
> We specify that a "num_hex" comprises 1 or more digits, however, that
> allows strtoull to fail with ERANGE. Limit the number of hex digits to
> being between 1 and 16.
>
> Before:
> ```
> $ perf stat -e 'cpu/rE7574c47490475745/' true
> perf: util/parse-events.c:215: fix_raw: Assertion `errno == 0' failed.
> Aborted (core dumped)
> ```
>
> After:
> ```
> $ perf stat -e 'cpu/rE7574c47490475745/' true
> event syntax error: 'cpu/rE7574c47490475745/'
>                          \___ Bad event or PMU
>
> Unable to find PMU or event on a PMU of 'cpu'
>
> Initial error:
> event syntax error: 'cpu/rE7574c47490475745/'
>                          \___ unknown term 'rE7574c47490475745' for pmu 'cpu'
>
> valid terms: event,pc,edge,offcore_rsp,ldlat,inv,umask,frontend,cmask,config,config1,config2,config3,name,period,percore,metric-id
> Run 'perf list' for a list of valid events
>
>  Usage: perf stat [<options>] [<command>]
>
>     -e, --event <event>   event selector. use 'perf list' to list available events
> ```
>
> Issue found through fuzz testing.
>
> Signed-off-by: Ian Rogers <irogers@google.com>

Hi, would be nice to land this.

Thanks!
Ian

> ---
>  tools/perf/util/parse-events.l | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l
> index 4ef4b6f171a0..f7df52b22c39 100644
> --- a/tools/perf/util/parse-events.l
> +++ b/tools/perf/util/parse-events.l
> @@ -156,8 +156,8 @@ event_pmu   [^,{}/]+[/][^/]*[/][^,{}/]*
>  event          [^,{}/]+
>
>  num_dec                [0-9]+
> -num_hex                0x[a-fA-F0-9]+
> -num_raw_hex    [a-fA-F0-9]+
> +num_hex                0x[a-fA-F0-9]{1,16}
> +num_raw_hex    [a-fA-F0-9]{1,16}
>  name           [a-zA-Z_*?\[\]][a-zA-Z0-9_*?.\[\]!\-]*
>  name_tag       [\'][a-zA-Z_*?\[\]][a-zA-Z0-9_*?\-,\.\[\]:=]*[\']
>  name_minus     [a-zA-Z_*?][a-zA-Z0-9\-_*?.:]*
> --
> 2.42.0.283.g2d96d420d3-goog
>

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

* Re: [PATCH v1] perf parse-events: Avoid erange from hex numbers
  2023-10-06 15:29 ` Ian Rogers
@ 2023-10-06 19:05   ` Namhyung Kim
  2023-10-12 17:20     ` Namhyung Kim
  0 siblings, 1 reply; 4+ messages in thread
From: Namhyung Kim @ 2023-10-06 19:05 UTC (permalink / raw)
  To: Ian Rogers
  Cc: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Adrian Hunter,
	Rob Herring, linux-perf-users, linux-kernel

Hi Ian,

On Fri, Oct 6, 2023 at 8:30 AM Ian Rogers <irogers@google.com> wrote:
>
> On Thu, Sep 7, 2023 at 2:05 PM Ian Rogers <irogers@google.com> wrote:
> >
> > We specify that a "num_hex" comprises 1 or more digits, however, that
> > allows strtoull to fail with ERANGE. Limit the number of hex digits to
> > being between 1 and 16.
> >
> > Before:
> > ```
> > $ perf stat -e 'cpu/rE7574c47490475745/' true
> > perf: util/parse-events.c:215: fix_raw: Assertion `errno == 0' failed.
> > Aborted (core dumped)
> > ```
> >
> > After:
> > ```
> > $ perf stat -e 'cpu/rE7574c47490475745/' true
> > event syntax error: 'cpu/rE7574c47490475745/'
> >                          \___ Bad event or PMU
> >
> > Unable to find PMU or event on a PMU of 'cpu'
> >
> > Initial error:
> > event syntax error: 'cpu/rE7574c47490475745/'
> >                          \___ unknown term 'rE7574c47490475745' for pmu 'cpu'
> >
> > valid terms: event,pc,edge,offcore_rsp,ldlat,inv,umask,frontend,cmask,config,config1,config2,config3,name,period,percore,metric-id
> > Run 'perf list' for a list of valid events
> >
> >  Usage: perf stat [<options>] [<command>]
> >
> >     -e, --event <event>   event selector. use 'perf list' to list available events
> > ```
> >
> > Issue found through fuzz testing.
> >
> > Signed-off-by: Ian Rogers <irogers@google.com>

Acked-by: Namhyung Kim <namhyung@kernel.org>

Thanks,
Namhyung

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

* Re: [PATCH v1] perf parse-events: Avoid erange from hex numbers
  2023-10-06 19:05   ` Namhyung Kim
@ 2023-10-12 17:20     ` Namhyung Kim
  0 siblings, 0 replies; 4+ messages in thread
From: Namhyung Kim @ 2023-10-12 17:20 UTC (permalink / raw)
  To: Ian Rogers
  Cc: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Adrian Hunter,
	Rob Herring, linux-perf-users, linux-kernel

On Fri, Oct 6, 2023 at 12:05 PM Namhyung Kim <namhyung@kernel.org> wrote:
>
> Hi Ian,
>
> On Fri, Oct 6, 2023 at 8:30 AM Ian Rogers <irogers@google.com> wrote:
> >
> > On Thu, Sep 7, 2023 at 2:05 PM Ian Rogers <irogers@google.com> wrote:
> > >
> > > We specify that a "num_hex" comprises 1 or more digits, however, that
> > > allows strtoull to fail with ERANGE. Limit the number of hex digits to
> > > being between 1 and 16.
> > >
> > > Before:
> > > ```
> > > $ perf stat -e 'cpu/rE7574c47490475745/' true
> > > perf: util/parse-events.c:215: fix_raw: Assertion `errno == 0' failed.
> > > Aborted (core dumped)
> > > ```
> > >
> > > After:
> > > ```
> > > $ perf stat -e 'cpu/rE7574c47490475745/' true
> > > event syntax error: 'cpu/rE7574c47490475745/'
> > >                          \___ Bad event or PMU
> > >
> > > Unable to find PMU or event on a PMU of 'cpu'
> > >
> > > Initial error:
> > > event syntax error: 'cpu/rE7574c47490475745/'
> > >                          \___ unknown term 'rE7574c47490475745' for pmu 'cpu'
> > >
> > > valid terms: event,pc,edge,offcore_rsp,ldlat,inv,umask,frontend,cmask,config,config1,config2,config3,name,period,percore,metric-id
> > > Run 'perf list' for a list of valid events
> > >
> > >  Usage: perf stat [<options>] [<command>]
> > >
> > >     -e, --event <event>   event selector. use 'perf list' to list available events
> > > ```
> > >
> > > Issue found through fuzz testing.
> > >
> > > Signed-off-by: Ian Rogers <irogers@google.com>
>
> Acked-by: Namhyung Kim <namhyung@kernel.org>

Applied to perf-tools-next, thanks!

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

end of thread, other threads:[~2023-10-12 17:20 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-07 21:05 [PATCH v1] perf parse-events: Avoid erange from hex numbers Ian Rogers
2023-10-06 15:29 ` Ian Rogers
2023-10-06 19:05   ` Namhyung Kim
2023-10-12 17:20     ` Namhyung Kim

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).