Messages in this thread | | | From | Ian Rogers <> | Date | Fri, 6 Oct 2023 08:29:47 -0700 | Subject | Re: [PATCH v1] perf parse-events: Avoid erange from hex numbers |
| |
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 >
| |