• Ian Rogers's avatar
    perf parse-events: Avoid erange from hex numbers · 03ff4c6b
    Ian Rogers authored
    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: default avatarIan Rogers <irogers@google.com>
    Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Link: https://lore.kernel.org/r/20230907210533.3712979-1-irogers@google.comSigned-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
    03ff4c6b
parse-events.l 12.2 KB